首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android onitemclicklistener问题

Android onitemclicklistener问题
EN

Stack Overflow用户
提问于 2014-03-07 21:10:20
回答 2查看 110关注 0票数 0

我不知道我这样做是否正确,因为我是安卓编程的新手,但我已经设置了一个OnItemClickListener,通过开始一个新的意图来响应用户的列表选择。

当用户选择列表视图中的任何文章时,他们应该会在新活动中看到相应的txt文件。

因此,在新的活动中,我试图找到一种方法来打开Assets文件夹的子文件夹中的相应文件。

代码语言:javascript
复制
@Override 
protected void onCreate(Bundle savedInstanceState) {            
super.onCreate(savedInstanceState);         
            setContentView(R.layout.activity);

    Intent i = getIntent();
    int position = i.getExtras().getInt("position");

    TextView news = (TextView) findViewById(R.id.txtView);
    AssetManager as = getAssets();

    InputStream is;
    try{
        is = as.open(""); <----- !!!
        int bytes = is.available();
        byte[] b = new byte[bytes];
        is.read(b);
        is.close();

        String s = new String (b);
        news.setText(s);
    }catch (IOException e){
        e.printStackTrace();
    }
}

……但是,我只能成功打开一个txt文件。我如何实现此活动以响应前一个活动中的OnItemClickListener,如下所示...

代码语言:javascript
复制
    ls = (ListView) findViewById(R.id.bArt);
    ls.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> av, View v, int position, long id) {

            Intent i = new Intent (getApplicationContext(), New_Activity.class );
            i.putExtra("id", position);
            startActivity(i);
        }
    });

..。从资源文件夹中打开正确的.txt文件

我已经坚持了很长一段时间了,所以我对功能性答案的鉴赏点(没有现金价值)将是无穷无尽的。

EN

回答 2

Stack Overflow用户

发布于 2014-03-07 21:12:46

改变这一点

代码语言:javascript
复制
 int position = i.getExtras().getInt("id");

当您在Activity之间传递某些数据时,您的Id名称必须相同。

票数 2
EN

Stack Overflow用户

发布于 2014-03-07 21:25:00

将文件名存储在intent中,而不是存储位置。Yon可以使用AdapterView.getItemAtPosition检索它

代码语言:javascript
复制
ls.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> av, View v, int position, long id) {

        Intent i = new Intent (getApplicationContext(), New_Activity.class );
        i.putExtra("id", av.getItemAtPosition(position));
        startActivity(i);
    }
});

在另一个活动中,检索文件名并将其传递给AssetsManager

代码语言:javascript
复制
String  fileName = i.getStringExtra("id");
InputStream is;
    try{
        is = as.open(fileName); <----- !!!
   // other code
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22250995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档