用于列表视图项的onitemclicklistener不起作用

时间:2013-10-27 09:42:10

标签: android

我在下面的代码中为列表视图的项目分配动作。但是当我点击列表视图的项目应用程序时“不幸停止”。我提供以下代码。

package com.lara;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class FamilyActivity extends Activity {

    private ListView lv;
    private String  names[]={"sum","hari","mom","dad"};
    private ArrayAdapter<String> s1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.family1);
        lv=(ListView)findViewById(R.id.listView1);
        s1=new ArrayAdapter<String>(getApplication(), R.layout.text, names);
        lv.setAdapter(s1);
        lv.setOnItemClickListener(new OnItemClickListener() {


            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplication(), 555, Toast.LENGTH_LONG).show();

            }
        });

    }

4 个答案:

答案 0 :(得分:3)

尝试以下

s1=new ArrayAdapter<String>(FamilyActivity.this,android.R.layout.simple_list_item_1, names);

并将Toast更改为

Toast.makeText(getApplicationContext(),""+ 555, Toast.LENGTH_LONG).show();

or

Toast.makeText(getApplicationContext(), String.valueOf(555), Toast.LENGTH_LONG).show();

555是一个int值

public static Toast makeText (Context context, int resId, int duration)

查找提供了id的资源,如果找不到资源未找到异常

你需要什么

public static Toast makeText (Context context, CharSequence text, int duration)

所以使用字符串

答案 1 :(得分:1)

尝试这样

Toast.makeText(FamilyActivity.this, ""+500, Toast.LENGTH_LONG).show();

答案 2 :(得分:0)

应用程序正在停止,因为 以下是为了展示Toast而需要传递的参数。

public static Toast makeText (Context context, CharSequence text, int duration) 

但您传递555 Integer而非CharSequence

像这样更新您的代码

  s1=new ArrayAdapter<String>(getApplicationContext(), R.layout.text, names);

 Toast.makeText(getApplicationContext(), ""+555, Toast.LENGTH_LONG).show();

答案 3 :(得分:0)

首先是那个R.layout.text布局是什么?使用android.R.layout.simple_list_item1(类似的东西)运行程序,看它是否崩溃。其次,因为你在getApplication中扩展了类Activity,我认为你也可以使用this关键字。此外,Toast.makeText方法的文档显示第二个参数是一个字符串,因此使用@Raghunandan的方法可能就是这样做的。最后一点是请总是提供logcat帖子,我不知道如何使用它并且会在S / O上用简单的微小东西来打扰每个人但是一旦你学会使用它调试就会很容易,让它成为一个学习点如何使用