我已经制作了自己的ListView适配器但没有打印数据

时间:2015-02-13 15:46:17

标签: java android listview adapter custom-adapter

这是我试过的,但我的ListView没有被填充。我使用自定义适配器,因为我不想改变没有布尔值= true的项目的背景颜色。我正在使用Android Studio。 希望有人能提供帮助。 我是android的新手。

 public class ShoppingListActivity extends ActionBarActivity {
        private TextView header;
        private ListView listView;
        private CustomArrayAdapter arrayAdapter;
        private ShoppingList shoppingList;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_shopping_list);
            header = (TextView)findViewById(R.id.textView2);

            //get reference to ListView
            listView = (ListView)findViewById(R.id.shoppingListItemsView);
            shoppingList = (ShoppingList) getIntent().getSerializableExtra(Globals.CHOSENLISTKEY);
            arrayAdapter = new CustomArrayAdapter(this, R.layout.custom_list_view, shoppingList.getItemList());
            listView.setAdapter(arrayAdapter);


            header.setText(shoppingList.toString());

            Button btnShop = (Button) findViewById(R.id.btnShop);
            btnShop.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(ShoppingListActivity.this, SelectStoreActivity.class);
                    startActivity(intent);
                }
            });
        }

        public void setData() {
            for(int i = 0; i < shoppingList.getItemList().size(); i++) {
                arrayAdapter.add(shoppingList.getItemList().get(i));
            }
        }
    }


    public class CustomArrayAdapter extends ArrayAdapter<Entry> {

        private int resource;
        private ArrayList<Entry> list;

        public CustomArrayAdapter(Context context, int resource, ArrayList<Entry> list) {
            super(context, resource);
            this.resource = resource;
            this.list = list;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parentGroup) {
            View view = convertView;
            Entry entry = list.get((position));
            if(view == null) {
                LayoutInflater layoutInflater = ((Activity) getContext()).getLayoutInflater();
                view = layoutInflater.inflate(resource, parentGroup, false);
            }

            TextView textView = (TextView) view.findViewById(R.id.customName);

                if(entry.getItem().isBought()) {
                    textView.setBackgroundColor(Color.BLUE);
                }

            return view;
        }
    }

1 个答案:

答案 0 :(得分:1)

要在ListView行中显示数据,请调用从setText方法返回的TextView的getView方法:

TextView textView = (TextView) view.findViewById(R.id.customName);
// get Text from entry and pass it to setText method
String strTextViewData=entry.getItem()...;
textView.setText(strTextViewData); 
if(entry.getItem().isBought()) {
 textView.setBackgroundColor(Color.BLUE);
}