2012-08-05 110 views
1

我有一个ListAdapter包含一个字符串数组。ListView onItemClick不工作

当我点击列表中的任何项目时,我希望应用程序将当前点击的项目传递给另一个活动并转到另一个活动。

我想设置onItemClickListener但没有成功。

的活动:

package com.nituach.nituach; 

import java.util.List; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

public class NituachActivity extends Activity implements OnClickListener, 
OnItemClickListener { 

Button addNewBuisness; 
ListView blv; 
public static int bname; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final String TAG = NituachActivity.class.getSimpleName(); 
    addNewBuisness = (Button) findViewById(R.id.btnAddNewBuisness); 
    addNewBuisness.setOnClickListener(NituachActivity.this); 
    blv = (ListView) findViewById(R.id.listView1); 

    Log.d(TAG, "All Variables was created"); 

    DataBase dbc = new DataBase(NituachActivity.this); 
    dbc.open(); 

    List<String> cs = dbc.getData(); 

    blv.setAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, cs)); 

    dbc.close(); 
    blv.setOnItemClickListener(NituachActivity.this); 


} 

public void onClick(View v) { 
    if (v == addNewBuisness) { 
     Intent addnbIntent = new Intent(NituachActivity.this, 
       AddNewBuisness.class); 
     NituachActivity.this.startActivity(addnbIntent);  
    }   

} 

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 


} 

} 
+0

也许addNewBuisness.setClickable(真)可以帮助? – 2012-08-05 19:05:43

回答

2

onItemClick() - 方法是空的。

ListView使用OnItemClickListener,它导出onItemClick()-方法。您的活动实现了“正常”OnClickListener(其中公开onClick()-方法)和OnItemClickListener。你不需要OnClickListener,只需要前者。

这往往更具可读性在现场添加一个匿名执行权:

blv.setOnItemClickListener(new OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    // Your Code 
    } 
}); 
+0

是的,我知道。我不知道如何从这一点... – Dori 2012-08-05 19:03:17

+0

@Dori更新了答案,检查出来。 – 2012-08-05 19:09:06

+0

检查点击是否在按钮上而不是ListView(addNewBuisness)的方法是什么? – Dori 2012-08-05 19:16:09

0

声明一个静态变量,在当前的活动并将其值设置为单击项目被点击列表的任何项目时。

public static String abc; 

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 


      abc = cs[arg2]; 
      Intent intent = new Intent(context, AddNewBusiness.class); 
      startActivity(intent); 
     } 
+0

另外,从代码中删除onClick()。无需在您的活动中实施OnClickListener。只需实现OnItemClickListener并使用我在答案中给出的函数定义。 – Swayam 2012-08-05 19:05:24

0

试试这个,可能会帮助ü...

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
//here arg2 is the position of that item in the listview, which u can use for indexing the string array, assumes `cs` is ur string array 
    Intent addnbIntent = new Intent(NituachActivity.this, 
      AddNewBuisness.class); 
    addnbIntent.putExtra("value",cs[arg2]) 
    NituachActivity.this.startActivity(addnbIntent);  

}