ListView的列表,用于使用intent连接另一个活动

时间:2013-08-22 05:21:39

标签: android listview android-intent android-activity

在连接到另一个活动时,我在使用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;
}
}

2 个答案:

答案 0 :(得分:1)

您的代码运行正常。它只是一个小错误。

在Alpha类中,将String make命名为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 =新意图(getApplicationContext(),arr [pos]);                     startActivity(B);

然后在这种情况下不需要开关盒

答案 1 :(得分:0)

删除

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

来自populateListView()和registerClickableList().........................

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

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