0

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 listviewis 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;
}

}

Community
  • 1
  • 1

0 Answers0