我所谓的更新的Android开发,我正在开发我的第一个应用程序,我正在寻找一种方法来列出应用程序的内容,我发现listview
是我可以显示内容的方式之一我必须使用自定义适配器来设置它的样式。在查看相关问题后如何制作适配器我在这里找到了一个很好的参考Custom Adapter for List View并且我的listview能够工作但问题我只看到我的while()内容的最后一行。
这个问题是因为
ThreeStrings threeStrings = new ThreeStrings(feed_title,feed_date, feed_radio); threeStringsList.add(threeStrings);
已定义在while循环中,因为我是java的新手,无法实现它将所有元素传递给适配器。
List<ThreeStrings> threeStringsList = new ArrayList<>();
ListView listView = (ListView) findViewById(R.id.datalistview);
ThreeHorizontalTextViewsAdapter threeHorizontalTextViewsAdapter = new ThreeHorizontalTextViewsAdapter(getApplicationContext(), R.layout.three_horizontal_text_views_layout, threeStringsList);
listView.setAdapter(threeHorizontalTextViewsAdapter);
// fields of feed [array] and loop
int feed_id;
String feed_radio, feed_title, feed_api, feed_frequency, feed_type, feed_date;
JSONObject feeds = object.getJSONObject("feeds");
Iterator<String> keys = feeds.keys();
while (keys.hasNext()) {
JSONObject row = feeds.getJSONObject(keys.next());
feed_title = row.getString("feed_title");
feed_radio = row.getString("feed_radio");
feed_date = row.getString("feed_date");
ThreeStrings threeStrings = new ThreeStrings(feed_title, feed_date, feed_radio);
threeStringsList.add(threeStrings);
adapter.notifyDataSetChanged();
}
是否有人可以帮助它发挥作用?
修改
public class ThreeHorizontalTextViewsAdapter extends ArrayAdapter<ThreeStrings> {
private int layoutResource;
public ThreeHorizontalTextViewsAdapter(Context context, int layoutResource, List<ThreeStrings> threeStringsList) {
super(context, layoutResource, threeStringsList);
this.layoutResource = layoutResource;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater layoutInflater = LayoutInflater.from(getContext());
view = layoutInflater.inflate(layoutResource, null);
}
ThreeStrings threeStrings = getItem(position);
if (threeStrings != null) {
TextView leftTextView = (TextView) view.findViewById(R.id.leftTextView);
TextView rightTextView = (TextView) view.findViewById(R.id.rightTextView);
TextView centreTextView = (TextView) view.findViewById(R.id.centreTextView);
if (leftTextView != null) {
leftTextView.setText(threeStrings.getLeft());
}
if (rightTextView != null) {
rightTextView.setText(threeStrings.getRight());
}
if (centreTextView != null) {
centreTextView.setText(threeStrings.getCentre());
}
}
return view;
}
}