ironmantis7x
ironmantis7x

Reputation: 827

how do i use two csv files to populate two views in android

I have two csv files that do the following: 1. The first one populates a list view that shows the questions. This rows are an onlcick listener that when pressed, spawns the second view. 2. the second CSV file has the answers to the questions in the first view.

My problem is this: I cannot get the the answer to show in the second view. The second view pops up, but it has no data.

Here is my code for the answer adapter:

public class AnswerArrayAdapter extends ArrayAdapter<String[]> {
    private List<String[]> answerList = new ArrayList<String[]>();

    static class AnswerViewHolder {
        TextView name2;
        TextView answertext;
    }

    public AnswerArrayAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }

    @Override
    public void add(String[] object) {
        answerList.add(object);
        super.add(object);
    }

    @Override
    public int getCount() {
        return this.answerList.size();
    }

    @Override
    public String[] getItem(int index) {
        return this.answerList.get(index);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        AnswerViewHolder viewHolder;
        if (row == null) {
            LayoutInflater inflater = (LayoutInflater) this.getContext().
                    getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(R.layout.screen_popup, parent, false);
            viewHolder = new AnswerViewHolder();
            viewHolder.name2 = (TextView) row.findViewById(R.id.name2);
            viewHolder.answertext = (TextView) row.findViewById(R.id.answertext);
            row.setTag(viewHolder);
        } else {
            viewHolder = (AnswerViewHolder)row.getTag();
        }
        String[] stat = getItem(position);
        viewHolder.name2.setText(stat[0]);
        viewHolder.answertext.setText(stat[1]);
        return row;
    }
}

Here is the main activity:

    public class MainActivity extends Activity {
        private ListView listView;
        private ItemArrayAdapter itemArrayAdapter;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            listView = (ListView) findViewById(R.id.listView);
            itemArrayAdapter = new ItemArrayAdapter(getApplicationContext(), R.layout.item_layout);

            Parcelable state = listView.onSaveInstanceState();
            listView.setAdapter(itemArrayAdapter);
            listView.onRestoreInstanceState(state);

            listView.setOnItemClickListener(new OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {

                    // selected item
                    //String answer = ((TextView) view).getText().toString();

                    View textview = view.findViewById(R.id.score);

                    String answer = textview.getContext().toString();
                    // Launching new Activity on selecting single List Item
                    Intent i = new Intent(getApplicationContext(), AnswerPopupWin.class);
                    // sending data to new activity
                    i.putExtra("answer", answer);
                    startActivity(i);


                }
            });

            InputStream inputStream = getResources().openRawResource(R.raw.islamicfatwahuthameen);
            CSVFile csvFile = new CSVFile(inputStream);
            List<String[]> scoreList = csvFile.read();

            for(String[] scoreData:scoreList ) {
                itemArrayAdapter.add(scoreData);
            }

        }

}

And here is the class for the answer:

public class AnswerPopupWin extends Activity {

    private ListView answerView;
    private AnswerArrayAdapter answerArrayAdapter;
    private View view;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(layout.screen_popup);
        answerView = (ListView) findViewById(R.id.answerView);
        answerArrayAdapter = new AnswerArrayAdapter(getApplicationContext(), layout.screen_popup);

        //View textview = view.findViewById(id.name2);

    }
}

Any help is greatly appreciated. I am trying to ask better questions. Sorry if this seems like a dumb question.

ironmantis7x

----UPDATE ----- Here is the other array adapter file::

ublic class ItemArrayAdapter extends ArrayAdapter<String[]> {
    private List<String[]> scoreList = new ArrayList<String[]>();

    static class ItemViewHolder {
        TextView name;
        TextView score;
        TextView answer;
    }

    public ItemArrayAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }

    @Override
    public void add(String[] object) {
        scoreList.add(object);
        super.add(object);
    }

    @Override
    public int getCount() {
        return this.scoreList.size();
    }

    @Override
    public String[] getItem(int index) {
        return this.scoreList.get(index);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View row = convertView;
        ItemViewHolder viewHolder;
        if (row == null) {
            LayoutInflater inflater = (LayoutInflater) this.getContext().
                    getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(R.layout.item_layout, parent, false);
            viewHolder = new ItemViewHolder();
            viewHolder.name = (TextView) row.findViewById(R.id.name);
            viewHolder.score = (TextView) row.findViewById(R.id.score);
            row.setTag(viewHolder);
        } else {
            viewHolder = (ItemViewHolder)row.getTag();
        }
        String[] stat = getItem(position);
        viewHolder.name.setText(stat[0]);
        viewHolder.score.setText(stat[1]);
        return row;

    }
}

Upvotes: 0

Views: 139

Answers (1)

Agustin Meriles
Agustin Meriles

Reputation: 4854

It seems like you are missing the code fragment when you add the Answers to the Adapter. You should have something like:

AnswerArrayAdapter answerArrayAdapter = 
    new AnswerArrayAdapter(getApplicationContext(), layout.screen_popup);

InputStream inputStream = getResources().openRawResource(R.raw.my_answers_file_resource);
CSVFile csvFile = new CSVFile(inputStream);
List<String[]> answerList = csvFile.read();
for(String[] answer : answerList ) {
    answerArrayAdapter.add(answer);
}

Upvotes: 1

Related Questions