Am so called newer to android development and i'm developing my first app, I was looking for a way to list content of the app and i found listview
is one of the way i can show the content but i have to use custom adapter to style it. After looking around relevant questions how adapter is been made i found a good reference here Custom Adapter for List View and my listview is able to work but the problem i am only seeing the last row of my while() contents.
This problem is because
ThreeStrings threeStrings = new ThreeStrings(feed_title, feed_date, feed_radio); threeStringsList.add(threeStrings);
has been defined inside while loop as am new to java am not able to implement it to pass all the elements to adapter.
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();
}
Is there anyone who can help to make it work?
EDIT
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;
}
}