0
다음을 수행하는 두 개의 csv 파일이 있습니다. 1. 첫 번째 질문에 목록보기가 채워집니다. 이 행은 눌려지면 두 번째보기를 생성하는 onlcick 리스너입니다. 2. 두 번째 CSV 파일에는 첫 번째보기의 질문에 대한 답변이 있습니다.두 개의 csv 파일을 사용하여 Android에서 두 개의보기를 채우는 방법
내 문제는 이것입니다. 두 번째보기에 표시 할 대답을 얻을 수 없습니다. 두 번째보기가 팝업되지만 데이터가 없습니다. 여기
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;
}
}
의 주요 활동 :
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);
}
}
}
그리고 여기에 답변을하는 클래스입니다 :
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);
}
}
모든 여기
대답 어댑터 내 코드입니다 도움이 대단히 감사합니다. 더 나은 질문을하려고합니다. 죄송합니다. 이것이 바보 같은 질문 인 것 같습니다.ironmantis7x
---- 업데이트 ----- 여기에 다른 배열 어댑터 파일 : 당신이 답변을 추가 할 때 코드 조각을 누락처럼
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;
}
}
질문과 답변을 위해 별도의 어레이 어댑터를 작성했습니다. 내가 죽인 것 같아, 응? – ironmantis7x
그래서 loadAnswersFromSomewhere(); 나는 대답을 가지고있는 CSV 파일을 가리킨다. – ironmantis7x
글쎄, 그것은 당신이 당신의 파일을 어떻게 구조화 했느냐에 달려있다. 어떤 종류의 대답을위한 cvs 파일이 있다면, 네, 파일을 읽음으로써'answers'를 읽어 들여야합니다. –