Android 如何为活动的oncreate方法内声明的listview创建onclick listner
我有一个活动来填充listview。我已经在活动的onCreate方法中创建了listview。现在我想为列表实现一个onclick listner。如何做到这一点 这是我使用listview的活动类:Android 如何为活动的oncreate方法内声明的listview创建onclick listner,android,listview,onclick,Android,Listview,Onclick,我有一个活动来填充listview。我已经在活动的onCreate方法中创建了listview。现在我想为列表实现一个onclick listner。如何做到这一点 这是我使用listview的活动类: public class PollStationActivity extends Activity { static String response_str=null; static String response_code=null; String ac_cod
public class PollStationActivity extends Activity {
static String response_str=null;
static String response_code=null;
String ac_code;
String ac_id;
String ac_lat;
String ac_lon;
String ac_name;
// Hashmap for ListView
ArrayList<HashMap<String, String>> PSList = new ArrayList<HashMap<String, String>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// no more this
setContentView(R.layout.activity_poll_station);
//sendPostRequest();
//Log.i("I am here","1");
final String status_code_from_prev= getIntent().getExtras().getString("status");
//Log.i("ss",status_code_from_prev);
ArrayList<PSItem> PSList = new ArrayList<PSItem>();
DatabaseHelper db = new DatabaseHelper(PollStationActivity.this);
ContentValues values = new ContentValues();
try {
db.createDataBase();
PSList = db.select(status_code_from_prev);
//Log.i("Count : ", " " + PSList.isEmpty());
} catch (IOException e) {
e.printStackTrace();
}
db.close();
String[] fromColumns = {"name"};
int[] toViews = {R.id.list_label_name}; // The TextView in simple_list_item_1
ListView listView1 = (ListView) findViewById(R.id.poll_list_listView);
List<HashMap<String, String>> fillMaps = new ArrayList<HashMap<String, String>>();
Iterator<PSItem> i = PSList.iterator();
while(i.hasNext())
{
HashMap<String, String> map = new HashMap<String, String>();
PSItem objPSItem = i.next();
map.put("name", objPSItem.PS_NAME);
map.put("ps_Id", objPSItem.PS_ID);
fillMaps.add(map);
}
// fill in the grid_item layout
SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.list_layout, fromColumns, toViews);
listView1.setAdapter(adapter);
}
}
公共类PollStationActivity扩展活动{
静态字符串响应\u str=null;
静态字符串响应_code=null;
字符串ac_代码;
字符串ac_id;
字符串ac_lat;
串交流;
字符串ac_名称;
//ListView的Hashmap
ArrayList PSList=新建ArrayList();
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//不要再这样了
setContentView(R.layout.activity\u poll\u station);
//sendPostRequest();
//Log.i(“我在这里”、“1”);
最终字符串状态\u代码\u from\u prev=getIntent().getExtras().getString(“状态”);
//Log.i(“ss”,来自上一个的状态代码);
ArrayList PSList=新建ArrayList();
DatabaseHelper db=新的DatabaseHelper(PollStationActivity.this);
ContentValues=新的ContentValues();
试一试{
db.createDataBase();
PSList=db.select(状态\代码\来自\上一个);
//Log.i(“Count:”,“+PSList.isEmpty());
}捕获(IOE异常){
e、 printStackTrace();
}
db.close();
字符串[]fromColumns={“name”};
int[]toViews={R.id.list\u label\u name};//简单列表项目中的TextView
ListView listView1=(ListView)findViewById(R.id.poll\u list\u ListView);
List fillMaps=new ArrayList();
迭代器i=PSList.Iterator();
while(i.hasNext())
{
HashMap=newHashMap();
PSItem objPSItem=i.next();
地图放置(“名称”,objPSItem.PS_名称);
map.put(“ps_Id”,objPSItem.ps_Id);
fillMaps.add(map);
}
//填写网格项目布局
simpledapter adapter=新的simpledapter(this、fillMaps、R.layout.list\u布局、fromColumns、toViews);
listView1.setAdapter(适配器);
}
}
单击listner时,我应该将listview放在哪里?如果您使用的是listview,那么应该使用OnItemClickListener。我会在分配适配器后添加侦听器 我更喜欢使用以下解决方案来处理单击事件
public class StartActivity extends Activity implements OnItemClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_start);
// Create adapter for the list view
ListView lw = (ListView) findViewById(R.id.WordsListView);
lw.setAdapter(adapter);
lw.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
}
public类StartActivity扩展活动实现McClickListener{
@凌驾
创建时的公共void(Bundle savedInstanceState){
setContentView(R.layout.activity_start);
//为列表视图创建适配器
ListView lw=(ListView)findViewById(R.id.WordsListView);
设置适配器(适配器);
lw.setOnItemClickListener(本);
}
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
}
}
您必须使用
AdapterView.OnItemClickListener
看
单击项目时将调用此处理程序,并向您提供单击项目的位置 您可以在初始化后立即设置侦听器,例如:
ListView listView1 = (ListView) findViewById(R.id.poll_list_listView);
listView1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//Handle the click
}
});
ListView listView1=(ListView)findViewById(R.id.poll\u list\u ListView);
listView1.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
//处理点击
}
});
即使您还没有为列表设置适配器,也就是说没有显示任何项目,只要您已经通过findViewById
初始化了listview,设置它的位置也无关紧要