自定义适配器没有显示任何项目

编程入门 行业动态 更新时间:2024-10-24 04:37:48
本文介绍了自定义适配器没有显示任何项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

这是从早期的问题上遵循:ImageButton ListView中的行内的Andr​​oid不工作但是从SO大师建议后,有人建议我发布一个新的问题。问题是,我有没有显示任何数据的自定义适配器。我曾看着其他问题,但它并没有提供解决方案。

This is a follow on from an earlier question: ImageButton within row of ListView android not working But after suggestions from SO gurus it has been suggested I post a new question. The issue is that I have a custom adapter that is not showing any data. I have looked into other questions, but it didn't provide a solution.

在我的主要活动我有几个按钮,其中一人:待办事项,应该创建一个从SQLite数据库显示一排数据,并根据某些因素(日期为主),它显示了一个类型的通信光的存储为可绘制的。

In my Main Activity I have a couple of buttons, one of them: ToDo, should create a row that displays data from a SQLite database, and depending on some factors (dates mainly), it shows a type of traffic light that is stored as a drawable.

在此行中的项目之一是,我希望用户能够点击和图像应该改变图像按钮。用户应该能够同时点击的实际行和新的活动开始。

Part of the Items in this Row is an Image Button that I want the user to be able to click and the image should change. The user should be able also to click on the actual row and a new activity starts.

我的问题是正在显示任何数据。

The issue I have is that NO DATA is being displayed.

所以,这里是我的code:

So, here is my code:

public class MainActivity extends Activity { // definitions etc ... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // definitions etc ... } public void ToDo(View v){ // the user has clicked in the ToDo button IgroDatabaseHelper helper = new IgroDatabaseHelper(getBaseContext()); // create instance of SQLIte database numRows = helper.NumEntries("ToDo"); // Get the number of rows in table int i = 1; ArrayList<RowItem> rowItems = new ArrayList<>(); RowItem myItem1; while (i <= numRows){ // get items from database // depending on value select different drawable // put data into List Array of RowItem myItem1 = new RowItem(TheWhat, R.drawable.teamworka, R.drawable.redtrafficlight, R.drawable.checkbox, TheWhenBy); rowItems.add(myItem1); // i = i+ 1; } ListView yourListView = (ListView) findViewById(R.id.list); CustomListViewAdapter customAdapter = new CustomListViewAdapter(this, R.layout.todo_row, rowItems); yourListView.setAdapter(customAdapter); }

该CustomListViewAdapter看起来是这样的:

The CustomListViewAdapter looks like this:

public class CustomListViewAdapter extends ArrayAdapter<RowItem> { Context context; ArrayList<RowItem> _rowItems; public CustomListViewAdapter(Context context, int resourceId, ArrayList<RowItem> rowItems) { super(context, resourceId); this.context = context; _rowItems = rowItems; System.out.println("I am in the custom Adapter class "+ _rowItems); } @Override public View getView(int position, View convertView, ViewGroup parent){ System.out.println("This is the get view"); View row = convertView; RowItem item = _rowItems.get(position); // you can now get your string and drawable from the item // which you can use however you want in your list String columnName = item.getColumnName(); int drawable = item.getDrawable(); if (row == null) { LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); row = mInflater.inflate(R.layout.todo_row, parent, false); } ImageButton chkDone = (ImageButton) row.findViewById(R.id.chkDone); chkDone.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { View parentRow = (View) v.getParent(); ListView listView = (ListView) parentRow.getParent(); final int position = listView.getPositionForView(parentRow); System.out.println("I am in position "+ position); } }); return row; } }

该RowItem类是这样的:

The RowItem Class looks like:

public class RowItem { private String _heading; private int _icon; private int _lights; private int _chkdone; private String _date; public RowItem(String heading, int icon, int lights, int chkDone, String date) { _heading = heading; _icon = icon; _lights = lights; _chkdone = chkDone; _date = date; System.out.println("adding stuff to my rows"); System.out.println("my column Name is " + heading); System.out.println("My drawable int is "+ icon); } public String getColumnName() { System.out.println("column Names is "+ _heading); return _heading; } public int getDrawable() { return _icon; } public int getLights(){ return _lights; } public int getchkDone(){ return _chkdone; } public String getDate(){ return _date; } }

我显然缺少的东西,就像我前面提到的,没有数据显示得到。我知道有一些获得通过的CustomListViewAdapter 2行的项目。但我也知道,CustomListViewAdapter中的View getView实际上并没有被调用。

I am obviously missing something, as I mentioned earlier, no data gets shown. I know that there are 2 row items that get passed to the CustomListViewAdapter. But I also know that the View getView inside the CustomListViewAdapter does not actually get called.

我希望我已经把足够的信息/ code,但如果你觉得我需要进一步解释的东西,请说。

I hope I have put enough information/code, but if you feel I need to explain something further, please say.

感谢都非常事先!

推荐答案

我没有看到一个getCount将()方法。你应该覆盖这样的:

I don't see a getCount() method. You should be overriding it like this:

@Override public int getCount() { return _rowItems.getCount(); }

另外,调用超(背景下,资源ID,rowItems); 也应该修复它。

更多推荐

自定义适配器没有显示任何项目

本文发布于:2023-11-26 21:27:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1635247.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:自定义   适配器   项目

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!