2014-09-25 2 views
0

안녕하세요 여러분, 저는 다중 열리스트 뷰를 채우기 위해 simpleadapter로 확장되는 사용자 지정 목록 어댑터 클래스를 사용하고 있습니다. onclick listener 이벤트를 각 열의 textview에 설정했지만 해당 textview 및 모든 요소와 연관된 행에서 데이터를 표시 할 다른 의도로 값을 검색 할 수 없습니다. 이제이 코드를 구현할 때 클릭 한 textview의 올바른 값 대신 임의의 정수가 나타납니다.simpleadapter를 사용하여 다른 인 텐트에서 정확한 값을 가져올 수 없습니다.

이 내 사용자 지정 목록 adapter.java 클래스

package com.example.category_wise_colored_newreport; 


public class CustomList_adapter extends SimpleAdapter{ 

private List<Map<String, Object>> itemList; 
//private ArrayList<HashMap<String , String>> itemList; 
private Context mContext; 
String ofc_code="ofc_code "; 
String ofc_desg="ofc_desg "; 
String ofc_name="ofc_name "; 
String dep_name="dep_name "; 
String total_comp="total_comp "; 
String pending="pending "; 
String desposed="disposed "; 
String interim="interim "; 
String defaulter="defaulter "; 
String diposed_perc="disposed_percent "; 
String TAG_COLOR1="color1"; 
String TAG_COLOR2="color2"; 
String TAG_COLOR3="color3"; 
String TAG_COLOR4="color4"; 
String TAG_COLOR5="color5"; 
ViewHolder holder=null; 

public CustomList_adapter(Context context, 
     List<? extends Map<String, ?>> data, int resource, String[] from, 
     int[] to) { 
    super(context, data, resource, from, to); 
    // TODO Auto-generated constructor stub 
    this.itemList=(List<Map<String,Object>>) data; 
    this.mContext=context; 
} 


class ViewHolder 
{ 
    TextView code; 
    TextView desg; 
    TextView name; 
    TextView dep; 
    TextView comp; 
    TextView pend; 
    TextView disp; 
    TextView intr; 
    TextView defl; 
    TextView dispper; 
} 


@SuppressWarnings("unused") 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    // TODO Auto-generated method stub 


    LayoutInflater inflater=(LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    if(convertView==null) 
    { 
     convertView=inflater.inflate(R.layout.listview_routes, null); 
     holder=new ViewHolder(); 

     holder.code=(TextView)convertView.findViewById(R.id.tv_content); 
     holder.desg=(TextView)convertView.findViewById(R.id.tv_contet2); 
     holder.name=(TextView)convertView.findViewById(R.id.tv_contet3); 
     holder.dep=(TextView)convertView.findViewById(R.id.tv_contet4); 
     holder.comp=(TextView)convertView.findViewById(R.id.tv_contet5); 
     holder.disp=(TextView)convertView.findViewById(R.id.tv_contet6); 
     holder.pend=(TextView)convertView.findViewById(R.id.tv_contet7); 
     holder.intr=(TextView)convertView.findViewById(R.id.tv_contet8); 
     holder.defl=(TextView)convertView.findViewById(R.id.tv_contet9); 
     holder.dispper=(TextView)convertView.findViewById(R.id.tv_contet10); 
     holder.disp.setTag(position); 
     holder.disp.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      Object pos= v.getTag(); 
      Intent i=new Intent(v.getContext(),MainActivity2.class); 
      //i.putExtra("X",holder.code.getText().toString()); 
      i.putExtra("X",pos.toString()); 
      v.getContext().startActivity(i); 
     } 
    }); 

     convertView.setTag(holder); 
    } 
    else 
    { 
     holder=(ViewHolder)convertView.getTag(); 
    } 

    holder.code.setText((CharSequence)itemList.get(position).get(ofc_code)); 
    holder.desg.setText((CharSequence)itemList.get(position).get(ofc_desg)); 
    holder.name.setText((CharSequence)itemList.get(position).get(ofc_name)); 
    holder.dep.setText((CharSequence)itemList.get(position).get(dep_name)); 
    holder.comp.setText((CharSequence)itemList.get(position).get(total_comp)); 
    holder.disp.setText((CharSequence)itemList.get(position).get(desposed)); 
    holder.pend.setText((CharSequence)itemList.get(position).get(pending)); 
    holder.intr.setText((CharSequence)itemList.get(position).get(interim)); 
    holder.defl.setText((CharSequence)itemList.get(position).get(defaulter)); 
    holder.dispper.setText((CharSequence)itemList.get(position).get(diposed_perc)); 
    holder.disp.setBackgroundColor((Integer)itemList.get(position).get(TAG_COLOR1)); 
    holder.pend.setBackgroundColor((Integer)itemList.get(position).get(TAG_COLOR2)); 
    holder.intr.setBackgroundColor((Integer)itemList.get(position).get(TAG_COLOR3)); 
    holder.defl.setBackgroundColor((Integer)itemList.get(position).get(TAG_COLOR4)); 
    holder.dispper.setBackgroundColor((Integer)itemList.get(position).get(TAG_COLOR5)); 

    return super.getView(position, convertView, parent); 
} 



} 

답변

0

의 getView에 holder.disp.setTag(position); 추가()이다. onClick()에서 int position = v.getTag();으로 위치를 검색합니다. (내가 생각하는 것을 던져야 해.).

+0

bro @greenapps 솔루션을 시도한 결과 코드에 구현했습니다. 그리고 저는이 위치를 캐스팅합니다. Object position = v.getTage(); 그런 다음이 position.toString()과 같은 문자열로 구문 분석하고 매번 임의의 정수를 던집니다. 수정 된 코드를 볼 수 있습니다. – user3469177

+0

시도해 보셨습니까 :'int position = v.getTag() ;. (내가 생각하는 것을 던져야 해.)'? – greenapps

+0

예 .greenapps v.getTag()가 캐스팅됩니다 .. 정수로 캐스팅되었습니다. 그리고 나서 textview를 클릭하면 각 textview는 나에게 임의의 정수를 제공합니다. – user3469177

관련 문제