Android - How to create clickable listview?

后端 未结 5 1204
心在旅途
心在旅途 2020-11-28 13:57

I want to make all my list items in the listview open up into a new page, so each listview item opens up onto a new black page that I can use. I don\'t know how to implement

相关标签:
5条回答
  • In fact it is quite easy:

    This is your Activity with the ListView, it implements an 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);
        }
    

    Edit

    The above code would be placed in your MainActivity.java. I changed the name of the class to MainActivity and the contentView to setContentView(R.layout.activity_main) - The names are those of a freshly created Android Project in Eclipse.
    Please see also the 2 new lines under //* Edit * - those will set the Listener for clicks on items in the list.

    Your activity_main.xml should look like this:

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

    The array.xml (not string.xml) in your `res/values/` folder looks like this

    <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.: If you copy & paste this code it should work. But you will get an error by clicking on an Item because you haven't created the ListItemDetail.class yet.

    Here is an example of how this could look:

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

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

    If you copy past this code it will work.

    0 讨论(0)
  • 2020-11-28 14:20

    listView= (ListView) findViewById(R.id.listview);

    • List item

      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);
              }
          }
      });
      
    0 讨论(0)
  • 2020-11-28 14:22

    You use the onListItemClick function to set up your Intent that loads the next activity and passes any data across.

    public void onListItemClick(ListView parent, View view, int position, long id)
    {
        Intent intent = new Intent(this, AnotherActivity.class);
        intent.putExtra("position", position);
        startActivity(intent);
    }
    
    0 讨论(0)
  • 2020-11-28 14:25

    you can populate listview from array in string.xml as like this

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

    and clicking on the listview items is quite simple and easy method.just use 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);
        }
    });
    
    0 讨论(0)
  • 2020-11-28 14:30
    1. Inside fragment.java with Array Adapter

    String[] menuItems = {"Default C02", "Default 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);
    
    
    
            }
        });
    
    0 讨论(0)
提交回复
热议问题