Android开发:传递信息

时间:2010-12-18 19:06:32

标签: android

尝试这样做时我真的很困惑:

让我们说我想建立一个应用程序,让你阅读有关动物的信息。

在我的主要课程上,我有一个列表视图,其中包括:猫,狗,蛇,兔子等。

如果我点击示例Dog我的其他类,我的其他layout.xml将会弹出。在这个details.xml布局中有一个Header文本,一个图片和一个maintext。

然而,文本只是null或什么都没有。那么我该如何操作,文本将根据我点击的项目而改变。

例如,当我按下Rabbit项目时,我不想要关于猫和猫图片的文字。

这可能吗?我试过调用方法,但如果方法不在当前类中,我只得到一个FC。香港专业教育学院也尝试了额外的意图,但尝试没有进展顺利。

谢谢你! 你的朋友; D

1 个答案:

答案 0 :(得分:2)

  

如果我点击示例狗我的其他课程   我的其他layout.xml会弹出

我猜你已经实现了onListItemClick

protected void onListItemClick(ListView l, View v, int position, long id)

此方法有一个id,您可以将其添加到意图中,以便发送到下一个活动,以了解哪个行(以及哪个项目)已被点击。

因此,在下一个活动中,您会获得正确的layout.xml和信息,具体取决于收到的id

修改

我们说MyFirstActivity是您的列表活动:

public class MyFirstActivity extends ListActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.listview);
        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[] {"Hello","World","Foo","Bar"}));

    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {     
        super.onListItemClick(l, v, position, id);
        Intent intent = new Intent(this,MySecondActivity.class);
        intent.putExtra("id",id);
        startActivity(intent);
    }
}

然后,在onListItemClick中,它向MySecondActivity发送一个意图id作为额外的地方我可以检索它并根据它获取信息

public class MySecondActivity  extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        Long lngId = getIntent().getExtras().getLong("id");
        Integer id = lngId.intValue();
        String message = null;      

        switch(id) {
            case 0:
                message = "Hello";
                break;
            case 1:
                message = "World";
                break;
            case 2:
                message = "Foo";
                break;
            case 3:
                message = "Bar";
                break;  
        }

        Toast.makeText(this,message + " was clicked",Toast.LENGTH_SHORT).show();
    }
}

希望这有帮助