problems with onItemClick listener
i've just started playing around with android and i followed a layout tutorial about customizing a ListView layout on this website.
Since all the list are populated using arrays and all share the same id -->(R.id.ListViewId), i was wondering that how do i implement an onItemClick listener on each individual color? I'm trying to create an activity for each color, like for example if i click on Red, it will start a new activity, and if i click on Blue, it will start a different activity etc.
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/ListViewId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Java
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ColorList extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] items = {"red", "blue","green"};
ListView listView = (ListView) findViewById(R.id.ListViewId);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
}
}
This is what i've tried....but i can't figure out how to do it...any ideas? Please.
ListView listView = (ListView) findViewById(R.id.ListViewId);
listView.setAdapter(new UserItemAdapter(this, 开发者_运维知识库android.R.layout.simple_list_item_1, users));
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int pos, long id){
// some code here to start a new activity
// the code below is just for testing, on click it will show a NullPointerException error
Object o = null;
o.toString();
}
});
You have Object o = null; o.toString();
. That is giving you your Null Pointer. Get rid of that and you'll be able to put in some real code.
Check out this tutorial on how to work with the click listener.
Your onItemClick is provided both the view itself and the position within the list; you need to use one of these to determine the information you want. In your simply example, position will be 0, 1, or 2 for "red", "blue", and "green". In a more complicated example, you can override creation of the view within your code and you can use setTag() to attach details you may need later (if position is not sufficient).
Try listening to to onListItemClick, instead of onItemClick.
In onItemClick()
use the View
and get the text...
String colourString = ((TextView) v).getText();
精彩评论