0

在连接到另一个活动时,我在使用 ClickListener(无论是OnClickListener或)作为我的列表时确实遇到了麻烦。OnItemClickListener我尝试在我的列表中插入一些点击事件的代码,但它不起作用。它总是给我错误。下面是我的字母活动的代码

public class Alphabet_Activity extends Activity

{

private List<Alpha> myAlpha=new ArrayList<Alpha>();

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

    populateAlphaList();
    populateListView();
    registerClickableList();
}
//------------------------------------------------------------>
//----->for contents of my list in ListView<------------------
//------------------------------------------------------------>
    private void populateAlphaList() 
{
    myAlpha.add(new Alpha("A", R.drawable.a));
    myAlpha.add(new Alpha("B", R.drawable.b));
    myAlpha.add(new Alpha("C", R.drawable.c));
    myAlpha.add(new Alpha("D", R.drawable.d));
    myAlpha.add(new Alpha("E", R.drawable.e));
    myAlpha.add(new Alpha("F", R.drawable.f));
    myAlpha.add(new Alpha("G", R.drawable.g));
    myAlpha.add(new Alpha("H", R.drawable.h));
    myAlpha.add(new Alpha("I", R.drawable.i));
    myAlpha.add(new Alpha("J", R.drawable.j));
    myAlpha.add(new Alpha("K", R.drawable.k));
    myAlpha.add(new Alpha("L", R.drawable.l));
    myAlpha.add(new Alpha("M", R.drawable.m));
    myAlpha.add(new Alpha("N", R.drawable.n));
    myAlpha.add(new Alpha("O", R.drawable.o));
    myAlpha.add(new Alpha("P", R.drawable.p));
    myAlpha.add(new Alpha("Q", R.drawable.q));
    myAlpha.add(new Alpha("R", R.drawable.r));
    myAlpha.add(new Alpha("S", R.drawable.s));
    myAlpha.add(new Alpha("T", R.drawable.t));
    myAlpha.add(new Alpha("U", R.drawable.u));
    myAlpha.add(new Alpha("V", R.drawable.v));
    myAlpha.add(new Alpha("W", R.drawable.w));
    myAlpha.add(new Alpha("X", R.drawable.x));
    myAlpha.add(new Alpha("Y", R.drawable.y));
    myAlpha.add(new Alpha("Z", R.drawable.z));
}
//-------------------------------------------------------------------------------------->
//----->for calling the values in Alpha Activity to Alphabet Activity<------------------
//-------------------------------------------------------------------------------------->
private void populateListView()
{
    ArrayAdapter<Alpha> adapter=new MyListAdapter();
    ListView list=(ListView) findViewById(R.id.alphaListView);
    list.setAdapter(adapter);           
}   
//--------------------------------------------------------------------------->
//----->for getting message after clicking one of the list<------------------
//--------------------------------------------------------------------------->
private void registerClickableList() {
    ListView list = (ListView) findViewById(R.id.alphaListView);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View viewClicked,
                int position, long id) {

            Alpha clickedAlpha = myAlpha.get(position);
            String message = "You clicked " + position + clickedAlpha.getName();
            Toast.makeText(Alphabet_Activity.this, message, Toast.LENGTH_LONG).show();
        }
    });
}
//------------------------------------------------------------------------------>
//------>calling of values in Alpha Activity and contents in myAlpha<-----------
//------------------------------------------------------------------------------>
private class MyListAdapter extends ArrayAdapter<Alpha>
{
    public MyListAdapter()
    {
        super(Alphabet_Activity.this, R.layout.alpha, myAlpha);

    }

    @Override
    public View getView( int position, View convertView, ViewGroup parent)
    {
        View itemView=convertView;
        if(itemView==null)
        {
            itemView=getLayoutInflater().inflate(R.layout.alpha, parent,false);
        }

        //---------------------
        Alpha currentAlpha=myAlpha.get(position);

        ImageView imageView=(ImageView)itemView. findViewById(R.id.icon_Alpha);
        imageView.setImageResource(currentAlpha.geticonAlpha());


        TextView name=(TextView) itemView.findViewById(R.id.alpha_Name);
        name.setText(currentAlpha.getName());

        return itemView;
        //return super.getView(position, convertView, parent);


    }

}
 }

这是我的 Alpha 活动的代码

public class Alpha {

private String Name;
private int iconAlpha;

public Alpha(String make, int iconAlpha) {
    super();
    this.Name = Name;
    this.iconAlpha = iconAlpha;
}
public String getName() {
    return Name;
}
public int geticonAlpha() {
    return iconAlpha;
}
}
4

2 回答 2

1

您的代码运行良好。它只是有一个小错误。

在 Alpha 类中,将 String 重命名为 Name。

要调用不同的活动,请在您的 onItemClick 中添加以下代码

switch (position) {
            case 0: 
                Intent a = new Intent(getApplicationContext(), AActivity.class);
                startActivity(a);
                break;

            case 1: 
                Intent b = new Intent(getApplicationContext(), BActivity.class);
                startActivity(b);
                break;
}

同样根据您的要求添加案例。

或者

您可以按顺序创建所有新活动的字符串数组。

然后您可以通过 arr[position] 获取活动名称并调用

意图 b = new Intent(getApplicationContext(), arr[pos]); 开始活动(b);

那么在这种情况下,不需要开关盒

于 2013-08-22T11:17:51.830 回答
0

消除

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

从 populateListView() 和 registerClickableList() ............

将其添加到 onCreate 方法中,然后在这两个函数中使用相同的对象。

在这里,您正在创建两个不同的对象。您需要一个对象

于 2013-08-22T05:46:28.350 回答