사용자 지정 어댑터가있는 ListView가 있습니다. 목록의 각 행에는 3 개의 텍스트 필드와 회 전자가 있습니다. 사용자가 회 전자 항목을 선택하면 관련 데이터를 텍스트 뷰에서 가져와야합니다. 다음과 같이 listView를 상상해보십시오 : | texView | textView | textView | Spinner | 회 전자 열에서 무언가를 선택할 때 3 개의 텍스트보기 데이터를 가져와야합니다. 그러나 나는 이것을 성취 할 수 없다.TextView 및 스피너가 데이터를 가져올 수없는 사용자 지정 어댑터가있는 ListView
나는이 작업을하는 방법에 대해 미쳐 가고있다. 다음은 CustomAdapter 코드입니다.
private class ViewHolder {
Spinner rateSpinner;
TextView pView;
TextView nView;
TextView cView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
LayoutInflater vi =
(LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.todolist_item, null);
holder = new ViewHolder();
holder.pView = (TextView)convertView.findViewById(R.id.r1);
holder.nView = (TextView)convertView.findViewById(R.id.r2);
holder.cView = (TextView)convertView.findViewById(R.id.r3);
holder.rateSpinner = (Spinner)convertView.findViewById(R.id.spinner2);
convertView.setTag(holder);
holder.rateSpinner.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
Object item = parent.getItemAtPosition(pos);
selectedRating = item.toString();
Log.v("Chosen rating from spinner", selectedRating); //<-this works correctly
Log.v("**********************","**");// <------- Problem: Need to get list view's textview entries with the associated spinner. But its just not working. Always printing the same wrong textview data
Log.v("Order Name",item._nText);
Log.v("Order Count",item._cText);
Log.v("Order Price",item._pText);
Log.v("**********************","**");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
);
}
else {
holder = (ViewHolder) convertView.getTag();
}
holder.rateSpinner = (Spinner)convertView.findViewById(R.id.spinner2);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(c,
android.R.layout.simple_spinner_item, list);
holder.rateSpinner.setAdapter(adapter);
fItem item = getItem(position);
holder.pView.setText(item._pText);
holder.nView.setText(item._nText);
holder.cView.setText(item._cText);
return convertView;
}
목록의 textView는 데이터베이스에서 먼저로드됩니다. 그런 다음 사용자는 회 전자에서 등급을 선택하도록 요청받습니다. 사용자가 등급을 선택하고 나면 관련 textView 항목을 찾아야하며이 행 데이터를 가져 오는 방법을 이해할 수 없습니다. 회 전자의 onItemSelectedListener()에서 Print 문을 참조하십시오.
정말 알아 주셔서 감사합니다.
이 명확하게하기 위해 어댑터에이를 시도해보십시오 Log.v이 라인'holder.personSpinner =을 넣어 전체 목록 – user2511030
의 모든 회 다시하고 다시 같은 텍스트 뷰 항목을 인쇄 (Spinner) convertView.findViewById (R.id.spinner2);'IF –
당신이 UI를 가지고 있다고 말할 때 코드에 두 개의 스피너가 보인다 : | textView | textView | textView | Spinner .. * holder.personSpinner와 holder.rateSpinner는 무엇입니까? * –