【问题标题】:How to set ArrayAdapter to Listview - Android如何将 ArrayAdapter 设置为 Listview - Android
【发布时间】:2013-08-24 17:05:03
【问题描述】:

我有一个扩展 ArrayAdapter 的类。我无法将 ListAdapter 设置为我的 ListView,因为当我尝试创建 ListAdapter 时,我不知道代码应该是什么。这是我当前的代码。

class Item {
                String username;
                String number;
                String content;

            }


             class ListAdapter extends ArrayAdapter<Item> {

                public ListAdapter(Context context, int textViewResourceId) {
                    super(context, textViewResourceId);
                    // TODO Auto-generated constructor stub
                }

                private List<Item> items;

                public ListAdapter(Context context, int resource, List<Item> items) {

                    super(context, resource, items);

                    this.items = items;

                }

                @Override
                public View getView(int position, View convertView, ViewGroup parent) {

                    View v = convertView;

                    if (v == null) {

                        LayoutInflater vi;
                        vi = LayoutInflater.from(getContext());
                        v = vi.inflate(R.layout.list_item, null);

                    }

                    Item p = items.get(position);

                    if (p != null) {

                        TextView tt = (TextView) v.findViewById(R.id.id);
                        TextView tt1 = (TextView) v.findViewById(R.id.categoryId);
                        TextView tt3 = (TextView) v.findViewById(R.id.description);

                        if (tt != null) {
                            tt.setText(p.getId());
                        }
                        if (tt1 != null) {

                            tt1.setText(p.getCategory().getId());
                        }
                        if (tt3 != null) {

                            tt3.setText(p.getDescription());
                        }
                    }

                    return v;

                }
             }

这是我遇到问题的地方,试图声明 ListAdapter

List <Item> tempList = new ArrayList <Item>();

                ListView yourListView = (ListView) findViewById(android.R.id.list);

                // Here is the problem
                ListAdapter customAdapter = new ListAdapter(this, R.layout.list_item, List<tempList> //the error occurs right here);

                yourListView .setAdapter(customAdapter);

【问题讨论】:

  • 您收到的错误信息是什么?
  • 上面写着 - Syntax error on token "&gt;", Expression expected after this token 我已经更新了我的第二个代码部分以便更好地理解它。

标签: android list android-listview android-arrayadapter


【解决方案1】:

文件:res/layout/list_fruit.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="20sp" >
</TextView>

ListFruitActivity 类

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class ListFruitActivity extends ListActivity {

    static final String[] FRUITS = new String[] { "Apple", "Avocado", "Banana",
            "Blueberry", "Coconut", "Durian", "Guava", "Kiwifruit",
            "Jackfruit", "Mango", "Olive", "Pear", "Sugar-apple" };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // no more this
        // setContentView(R.layout.list_fruit);

        setListAdapter(new ArrayAdapter<String>(this, R.layout.list_fruit,FRUITS));

        ListView listView = getListView();
        listView.setTextFilterEnabled(true);

        listView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // When clicked, show a toast with the TextView text
                Toast.makeText(getApplicationContext(),
                ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
            }
        });

    }

}

样本输出:

【讨论】:

  • 这是一个很好的例子,但遗憾的是这是一个字符串适配器。我的是一个列表适配器。有点不同。
【解决方案2】:

改变

ListAdapter customAdapter = new ListAdapter(this, R.layout.list_item,List<tempList>)

ListAdapter customAdapter = new ListAdapter(this, R.layout.list_item, tempList); 
//...........

删除列表只需添加 tempList

【讨论】:

  • 正是我想要的!谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多