Android – 如何创build可点击的列表视图?
我想让列表视图中的所有列表项打开到一个新页面,所以每个列表视图项目打开到一个新的黑色页面,我可以使用。 我不知道如何实现这一点。 我已经search了几个小时,并找不到解决scheme的答案。 如果有人能够展示和/或解释如何做到这一点,而不是提供一个链接,这将是非常感谢,但是或者是有帮助的。
这是我的代码到目前为止:
<string-array name="sections"> <item >Pro Constructive</item> <item >Con Constructive</item> <item >1st Speaker Cross</item> <item >Pro Rebbutal</item> <item >Con Rebuttal</item> <item >2nd Speaker Cross</item> <item >Pro Summary</item> <item >Con Summary</item> <item >Grand Cross</item> <item >Pro Final Focus</item> <item >Con Final Focus</item> </string-array>
这是在我的string.xml
<ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:entries="@array/sections" > </ListView>
这是在我的activity_main.xml。
我在哪里可以使我的列表中的每个项目都可以点击并打开到新的页面?
提前致谢!
编辑:
Logcat不再相关。
其实这很简单:
这是您的ListView活动,它实现了一个OnItemClickListener:
public class MainActivity extends Activity implements OnItemClickListener { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //* *EDIT* * ListView listview = (ListView) findViewById(R.id.listView1); listview.setOnItemClickListener(this); } public void onItemClick(AdapterView<?> l, View v, int position, long id) { Log.i("HelloListView", "You clicked Item: " + id + " at position:" + position); // Then you start a new Activity via Intent Intent intent = new Intent(); intent.setClass(this, ListItemDetail.class); intent.putExtra("position", position); // Or / And intent.putExtra("id", id); startActivity(intent); }
编辑
上面的代码将放置在您的MainActivity.java中。 我将类的名称更改为MainActivity
,将contentView更改为setContentView(R.layout.activity_main)
– 名称是Eclipse中新创build的Android项目的名称。
请参阅// * Edit *下面的2个新行 – 这些将设置监听器来查看列表中的项目。
你的activity_main.xml应该如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:entries="@array/sections" > </ListView> </RelativeLayout>
你的`res / values /`文件夹中的array.xml (不是string.xml)看起来像这样
<resources> <string-array name="sections"> <item >Pro Constructive</item> <item >Con Constructive</item> <item >1st Speaker Cross</item> <item >Pro Rebbutal</item> <item >Con Rebuttal</item> <item >2nd Speaker Cross</item> <item >Pro Summary</item> <item >Con Summary</item> <item >Grand Cross</item> <item >Pro Final Focus</item> <item >Con Final Focus</item> </string-array> </resources>
注意:如果你复制并粘贴这个代码,它应该工作。 但是,由于您尚未创buildListItemDetail.class
因此您将通过单击一个项目来获得一个错误。
这是一个如何看起来如此的例子:
你的ListItemDetail.java:
public class ListItemDetail extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listitem); Intent intent = getIntent(); int position = intent.getIntExtra("position", 0); // Here we turn your string.xml in an array String[] myKeys = getResources().getStringArray(R.array.sections); TextView myTextView = (TextView) findViewById(R.id.my_textview); myTextView.setText(myKeys[position]); } }
和它的activity_listitem.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/my_textview"/> </LinearLayout>
如果你复制过这个代码,它将工作。
您可以使用onListItemClick
函数来设置加载下一个活动并传递任何数据的Intent。
public void onListItemClick(ListView parent, View view, int position, long id) { Intent intent = new Intent(this, AnotherActivity.class); intent.putExtra("position", position); startActivity(intent); }
你可以像这样在string.xml中从数组填充listview
String[] myKeys = getResources().getStringArray(R.array.sections); ListView mListView = (ListView)findViewById(R.id.listView1); mListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myKeys));
并点击listview项目是相当简单和容易的方法。 只要使用setOnItemClickListener
mListView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0,View arg1, int position, long arg3) { Intent n = new Intent(getApplicationContext(), yourclass.class); n.putExtra("position", position); startActivity(n); } });
listView =(ListView)findViewById(R.id.listview);
-
列表项目
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(position==0){ Intent i=new Intent(MainActivity.this,Main3Activity.class); startActivity(i); } } });