【问题标题】:What is the relationship between ListView and using ArrayAdapter to show arraylist?ListView和使用ArrayAdapter显示arraylist有什么关系?
【发布时间】:2013-02-04 02:47:41
【问题描述】:

在过去的几个小时里,我一直在尝试做一些我认为应该是微不足道的事情。我一直在阅读有关 stackoverflow 的答案,但它并没有和我开玩笑。人们在stackoverflow上展示了ArrayAdapters接受字符串ArrayLists的例子。这对我不起作用。

Populating a ListView using an ArrayList?

我试图了解这里发生了什么。如果我正在处理 String 类型的数组列表,这意味着我唯一可以将数据绑定到的是 textview,当然不是 listview,除非我创建自己的自定义链接适配器类?这似乎我错过了一些信息。我会认为这个问题会如此普遍,因此会提出解决方案。我的代码如下,我收到“E/ArrayAdapter(5106): You must supply a resource ID for a TextView”错​​误。

public class Favorites extends Activity{
UserFunctions userFunctions  = new UserFunctions();

ArrayAdapter<String> arrayAdapter1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.favoritespage);
    arrayAdapter1 = new ArrayAdapter<String>(Favorites.this,android.R.layout.activity_list_item);
    new DownloadDataTask().execute();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main_screen, menu);
    return true;
}

   private class DownloadDataTask extends AsyncTask<JSONArray, JSONArray, ArrayList<String> > {


        @Override
        protected ArrayList<String> doInBackground(JSONArray... params) {
            JSONArray json = userFunctions.ziplistrequest("39", "-74", "50");
            ArrayList<String> zipcodes = new ArrayList<String>();
            for(int i=0; i < json.length() ; i++) {
                JSONObject jarray = null;
                try {
                    jarray = json.getJSONObject(i);
                    String zip = jarray.getString("ZIPCODE");
                    zipcodes.add(zip);
                    arrayAdapter1.add(zip);
                    Log.d(zip,"Output");
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return zipcodes;
        }   
        protected void onPostExecute(ArrayList<String> result){
            ListView listView = (ListView) findViewById(R.id.list);
            arrayAdapter1.addAll(result);
            listView.setAdapter(arrayAdapter1);
        }
    }

}

【问题讨论】:

  • 我将第 10 行的一件事从“activity_list_item”更改为“simple_list_item_1”,请告诉我为什么这会显示我的列表?我想了解,以免将来让我措手不及。

标签: java android listview android-arrayadapter


【解决方案1】:

尝试使用android.R.layout.simple_list_item1 而不是'android.R.layout.activity_list_item`

【讨论】:

  • 这确实使它工作,我在我的评论中提出,但你能解释为什么吗?我想了解其中的那一部分。
猜你喜欢
  • 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
相关资源
最近更新 更多