How can I display specific CSV content for a click list item?

I am trying to display specific CSV content for an item with a click, but with my current code, I can only display the entire CSV file. For example, when I click on level 2, the entire CVS list is displayed, but I am trying to show only level 2 CSV elements.

This is my first look:

enter image description here
This is the view I get when I click on level 2:

Exercises list

But it also displays level 1 CSV elements, how can I only display level 2 elements? And when Level 1 is clicked, how do I display only Level 1 items? etc.

MainActivity.java

public class MainActivity extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // storing string resources into Array // R.array.levels is in list_levels.xml String[] levels = getResources().getStringArray(R.array.levels); // Binding resources Array to ListAdapter this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label_level, levels)); ListView lv = getListView(); // listening to single list item on click lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // selected item String list = ((TextView) view).getText().toString(); // Launching new Activity on selecting single List Item Intent i = new Intent(getApplicationContext(), SingleListItem.class); // sending data to new activity i.putExtra("list", list); startActivity(i); } }); } 

}

Here is my CSVFile.java file

  public class CSVFile { InputStream inputStream; public CSVFile(InputStream inputStream){ this.inputStream = inputStream; } public List<String[]> read(){ List<String[]> resultList = new ArrayList<String[]>(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); try { String csvLine; while ((csvLine = reader.readLine()) != null) { String[] row = csvLine.split(","); resultList.add(row); } } catch (IOException ex) { throw new RuntimeException("Error in reading CSV file: "+ex); } finally { try { inputStream.close(); } catch (IOException e) { throw new RuntimeException("Error while closing input stream: "+e); } } return resultList; } } 

My ItemArrayAdapter.java class

  public class ItemArrayAdapter extends ArrayAdapter<String[]> { private List<String[]> stimuliList = new ArrayList<String[]>(); static class ItemViewHolder { TextView level_number; TextView stimuli_name; } public ItemArrayAdapter(Context context, int textViewResourceId) { super(context, textViewResourceId); } @Override public void add(String[] object) { stimuliList.add(object); super.add(object); } @Override public int getCount() { return this.stimuliList.size(); } @Override public String[] getItem(int index) { return this.stimuliList.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.single_list_item_view, parent, false); viewHolder = new ItemViewHolder(); viewHolder.level_number = (TextView) row.findViewById(R.id.level_number); viewHolder.stimuli_name = (TextView) row.findViewById(R.id.stimuli_name); row.setTag(viewHolder); } else { viewHolder = (ItemViewHolder)row.getTag(); } String[] stat = getItem(position); viewHolder.level_number.setText(stat[0]); viewHolder.stimuli_name.setText(stat[1]); return row; } } 

SingleListItem.java

  public class SingleListItem extends Activity{ private ListView listView; private ItemArrayAdapter itemArrayAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.single_list_item_view); TextView txtList = (TextView) findViewById(R.id.list_label); Intent i = getIntent(); // getting attached intent data String list = i.getStringExtra("list"); // displaying selected list name txtList.setText(list); listView = (ListView) findViewById(R.id.stimuli_list); itemArrayAdapter = new ItemArrayAdapter(getApplicationContext(), R.layout.single_list_item_view); Parcelable state = listView.onSaveInstanceState(); listView.setAdapter(itemArrayAdapter); listView.onRestoreInstanceState(state); InputStream inputStream = getResources().openRawResource(R.raw.stimulis); CSVFile csvFile = new CSVFile(inputStream); List<String[]> stimuliList = csvFile.read(); for(String[] stimuliData:stimuliList ) { itemArrayAdapter.add(stimuliData ); } } } 

And finally, a quick look at my CSV file, stimulis.csv

 level 1,feu level 1,fΓͺte level 2,blanc level 2,blague ... 

Is it possible?

+5
source share
1 answer

I am afraid that this is impossible.

+1
source

Source: https://habr.com/ru/post/1213051/


All Articles