【问题标题】:Android onitemclicklistener issuesAndroid onitemclicklistener 问题
【发布时间】:2014-03-07 13:10:19
【问题描述】:

不知道我是否做得对,因为我是 android 编程新手,但我设置了一个 OnItemClickListener 以通过开始一个新的意图来响应用户的列表项选择。

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

所以在新的活动中,我试图找到一种方法来打开 Assets Folder 的子文件夹中的相应文件 ....

@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,如下所示...

    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 文件

我已经坚持了很长时间,所以我对功能性答案的赞赏点(没有现金价值)将是无止境的 非常感谢

【问题讨论】:

  • 您遇到什么错误?发布 logcat。
  • 应该是 int position = i.getExtras().getInt("id");
  • 您拥有带有文件名的 ListView,并且您想打开您在第二个活动中按下的文件?
  • No Error Spring Breaker atm 它通过新意图和完全正确的黑带加载空白活动。
  • 看看 Rethinavel 是否可行

标签: android eclipse android-activity assets onitemclicklistener


【解决方案1】:

改变这个

 int position = i.getExtras().getInt("id");

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

【讨论】:

  • 不知道是否会导致问题,但是根据New_Activity没有使用变量“position”
【解决方案2】:

不是存储位置,而是将文件名存储在意图中。你可以通过AdapterView.getItemAtPosition 检索它

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

String  fileName = i.getStringExtra("id");
InputStream is;
    try{
        is = as.open(fileName); <----- !!!
   // other code
   }

【讨论】:

  • 对,这个方法看起来很有希望,我正在尝试让它在 atm 工作,但是在选择“标题”时应用程序崩溃了
  • 在listview中是否有一个txt文件名也在assets文件夹中??
  • 是的,列表视图中的字符串与其对应的文本文件相同,但格式不同(我在列表视图中使用大写,但 .txt 文件均为小写)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多