【问题标题】:Android ArrayAdapter within setOnItemClickListenersetOnItemClickListener 中的 Android ArrayAdapter
【发布时间】:2014-04-01 01:39:49
【问题描述】:

我希望你能帮助我这个新手q:) 我正在使用安卓工作室。 我正在尝试在 setOnItemClickListener 中使用 ArrayAdapter 但出现错误,我不知道我在这里做错了什么。请帮帮我:)

这个“listAdapter = new ArrayAdapter(this, R.layout.simplerow, arrayView);”给出这个错误:

无法解析构造函数 'ArrayAdapter(android.widget.AdapterView.OnItemClickListener, int, java.util.Arraylist)'

-----我的代码------

mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View v, int position,
                            long arg3)
    {
        String name = arg0.getItemAtPosition(position).toString();
        //Log.d("name", "name: "+name);
        int j = 0;
        while (j < livsmedelsNameValues.size()) {
            if (livsmedelsNameValues.get(j).toString().equalsIgnoreCase("Foodlist: "+name)) {
                for (int i = 0; i < 62; i++) {
                    test[0] = livsmedelsNameValues.get(i+j);
                    //Log.d("test", "test: " + test[0]);
                    arrayView.add(test[0].toString());
                }
            }
            j++;
        }
        listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, arrayView);


        mainListView.setAdapter( listAdapter );
    }

});

【问题讨论】:

  • 请发布错误日志...
  • arrayView 应该是数组字符串。检查您是否传递了正确的字符串数组
  • final ArrayList arrayView = new ArrayList();这就是它的样子......无论如何,在一个答案之后,我解决了代码错误,但现在的问题是 listVIew 没有使用“arrayView”中的这个信息设置。谢谢你的回答:)

标签: android listview android-arrayadapter


【解决方案1】:

你有

listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, arrayView);

this 不是有效的上下文。如果在片段中使用ActivityName.thisgetActivity()

【讨论】:

    【解决方案2】:

    listAdapter = new ArrayAdapter(这个, R.layout.simplerow, arrayView);

    这里 ArrayAdapter 的第一个参数必须是上下文。所以 在您的 onclick 侦听器中,“this”表示 OnItemClickListener 而不是 Context。如果代码在 Activity 类中,则使用“this”。

    现在使用 getBaseContext() 或 getApplicationContext() 或您的 activity.this 或 getActivity() 代替“this”,所以使用

    listAdapter = new ArrayAdapter(getBaseContext(),
    

    R.layout.simplerow, arrayView);

    listAdapter = new ArrayAdapter(getApplicationContext(),R.layout.simplerow, arrayView);
    

    【讨论】:

    • 感谢您没有错误:) 任何想法为什么列表视图没有用这些新东西更新? mainListView.setAdapter(listAdapter);可能是因为我已经使用了这个列表视图并尝试输入新信息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 2011-08-08
    • 1970-01-01
    • 2014-11-13
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多