Android-如何创建Clickable ListView



我想在ListView中将所有列表项目打开到新页面中,因此每个ListView项目都可以打开我可以使用的新黑页。我根本不知道该如何实施。我已经搜索了几个小时,找不到解决方案的答案。如果有人可以显示和/或解释如何执行此操作而不是提供链接,这将不胜感激。

这是我到目前为止的代码:

  <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>

这在我的字符串中。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中新鲜创建的Android项目的名称。
请参阅//* 编辑 *下的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>

array.xml (不是string.xml)您的`res/values/`文件夹看起来像

<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>

n.b。:如果您复制&amp;粘贴此代码应该起作用。但是,您会通过单击项目来遇到错误,因为您还没有创建ListItemDetail.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>

如果您复制经过此代码,它将起作用。

您可以从字符串中的数组填充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项目非常简单。

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);
            }
        }
    });
    

您使用onListItemClick函数来设置您的意图,以加载下一个活动并传递任何数据。

public void onListItemClick(ListView parent, View view, int position, long id)
{
    Intent intent = new Intent(this, AnotherActivity.class);
    intent.putExtra("position", position);
    startActivity(intent);
}
  1. 内部fragment.java带有数组适配器

字符串[] menuitems = {"默认C02","默认为02"};

    ListView listView = (ListView) root.findViewById(R.id.main_menu);
    ArrayAdapter<String> listViewAdapter = new ArrayAdapter<String>(
        getActivity()
        ,android.R.layout.simple_list_item_1
        ,menuItems
    );
    listView.setAdapter(listViewAdapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
        public void onItemClick(AdapterView<?> l, View v, int position, long id){
            Log.i("menuItems", "You clicked Item: " + id + " at position:" + position);

        }
    });

相关内容

  • 没有找到相关文章

最新更新