Bagaimana cara mengatur onClickListener pada ArrayAdapter?

Saya membuat kelas seperti di bawah ini

// All necessary imports are here

public class More extends Activity {

    String[] MoreItems = { "Transfers", "Budgets", "Branches", "Tools", "News",
            "Customer Service", "Settings", "Help", "About" };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.more_view);

        ListView moreListView = (ListView) findViewById(R.id.moreListView);
        MoreListAdapter listAdapter = new MoreListAdapter();
        moreListView.setAdapter(listAdapter);

        // accountsTypeListView.setOnItemClickListener(listClickListner);
    }

    class MoreListAdapter extends ArrayAdapter<String> {
        MoreListAdapter() {
            super(More.this, R.layout.list_item, MoreItems);
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            View row;

            if (convertView == null) {
                LayoutInflater inflater = getLayoutInflater();
                row = inflater.inflate(R.layout.list_item, parent, false);
            } else {
                row = convertView;
            }
            TextView tv = (TextView) row.findViewById(R.id.textItem);

            tv.setText(getItem(position));

            return row;
        }
    }
}

Ini akan menghasilkan Daftar, saya ingin memanggil masing-masing aktivitas pada masing-masing klik, seperti jika Pengguna mengklik Transfer maka akan menampilkan Aktivitas transfer, Bagaimana saya bisa memanggil onClickListener pada daftar ini dan bagaimana saya bisa memulai Activity saat diklik.

Larutan

Anda juga bisa melakukan seperti ini ..

moreListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub
                Log.d("############","Items " +  MoreItems[arg2] );
            }

        });
Komentar (1)

Ada dua opsi untuk menangani event klik untuk setiap baris.

  1. Jika kelas Anda memperluas ListActivity, Anda dapat menimpa metode berikut.
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
  super.onListItemClick(l, v, position, id);
  //do something here using the position in the array
}
  1. Tangani peristiwa klik baris dalam metode getView()
row.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

    }
});
Komentar (3)

Kelas "More" Anda harus meng-extend ListActivity, bukan Activity, lalu Anda bisa meng-override onListItemClick

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    //do something here using the position in the arrya
}

Edit: Lupa mengatakan, dalam tata letak Anda, ListView Anda harus dipanggil: android:id="@android:id/list"

Komentar (5)