Android ListView - 单击处理程序无法正常工作

时间:2011-03-10 16:28:19

标签: android listview

我仍然遇到ListView点击处理程序的问题。事件没有被解雇,所以 我没有看到调试信息。

我想使用Activity而不是ListActivity

这又是我的代码:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    // Capture our button from layout
    //appState = ((MyApp)getApplicationContext());
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    //requestWindowFeature(Window.FEATURE_LEFT_ICON);




    setContentView(R.layout.listr);


    //setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.fishicon);

   setupDB();  
   populateList3();



   ListView lv = (ListView) findViewById(R.id.list);


  // lv.setClickable(true);


     lv.setOnItemClickListener(new OnItemClickListener() {

       //@Override

       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

           Toast.makeText(ListRecords.this,"Clicked!", Toast.LENGTH_LONG).show();
       }
   });

这是XML文件:

<?xml version="1.0" encoding="utf-8"?>  
  <LinearLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
     android:layout_width="fill_parent"  
     android:orientation="vertical"  
     android:gravity="center"
     android:layout_height="fill_parent">  



  <!--Put form controls here-->  
 <ListView 
    android:id="@+id/list"
    android:layout_width="wrap_content"
    android:layout_height="400dp" /> 
     <Button
        android:id="@+id/previousbutton"
        android:gravity="center_horizontal"
        android:layout_width = "fill_parent"
        android:layout_height = "fill_parent"

        android:text="Previous Menu"/>
</LinearLayout>  

我无法弄清楚点击监听器无法正常工作的原因。

由于 麦克

3 个答案:

答案 0 :(得分:1)

除非您确定如何使用它们,否则不要使用内联侦听器 - 它们可能超出范围并导致各种问题。

试试这个......

public class MyActivity extends Activity
    implements AdapterView.onItemClickListener {

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

        ListView lv = (ListView) findViewById(R.id.list);
        lv.setOnItemClickListener(this);

        // Do whatever else you need to do
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // Do whatever
    }
}

答案 1 :(得分:0)

我会取消注释@Override。它可以保证您的签名与您尝试覆盖的方法相匹配。

如果你的方法签名是正确的,那么我怀疑问题出在populateList3()。你也可以发布那些代码吗?

答案 2 :(得分:0)