0

안드로이드 OS 버전을 다루는 몇 가지 이상한 문제가 생겼습니다. 내 문제는 내가 안드로이드 버전 4에서 원하지만 안드로이드 버전에서 반대 방식으로 2.3ListView 조작은 안드로이드 버전에 따라 다릅니다

공용 클래스 FeturesList 작업 같은 프로그램은 안드로이드에서 활동 {

ImageView    imgFeture; 
ListView    listview; 
ArrayList<String>    values; 
CustomListAdapter adapter; 
public static boolean itemOnView = false; 

int tempPos; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_fetures_list); 


    listview = (ListView) findViewById(R.id.listView1); 
    values=new ArrayList<String>(); 
    values.add(" ESSENTIAL  "); 
    values.add(" EMERGENCY  "); 
    values.add(" ENTERTAINMENT "); 
    values.add(" VIDEO CALL  "); 
    values.add(" DOCTORS  "); 
    values.add(" SOCIETY  "); 
    values.add(" FAMILY  "); 
    values.add(" OTHERS  "); 
    values.add(" WHAT'S NEW  "); 

    imgFeture = (ImageView) findViewById(R.id.imageFeatures); 

    adapter  = new CustomListAdapter(this, values); 
    listview.setAdapter(adapter); 
    listview.setSelection(0); 


    listview.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View v, 
       int position, long id) { 
      imgFeture.setBackgroundDrawable(getResources().getDrawable(getResources().getIdentifier("drawable/feature_"+position,"drawable",getPackageName()))); 


      tempPos = position; 
      for(int i = 0; i < arg0.getChildCount(); i++){ 
       if(i == position){ 
        arg0.getChildAt(i).setBackgroundColor(Color.WHITE); 
        TextView text = (TextView) v.findViewById(R.id.rowListTextView); 
        text.setTextColor(Color.BLACK); 

        adapter.notifyDataSetChanged(); 
       }else{ 

        arg0.getChildAt(i).setBackgroundColor(Color.MAGENTA); 

       } 
      } 


     } 


    }); 


} 

public class CustomListAdapter extends ArrayAdapter<String> 
{ 
    Activity context; 
    ArrayList<String> row=null; 
    LayoutInflater inflator=null; 
    public CustomListAdapter(Activity context,ArrayList<String> row) 
    { 
     super(context,R.layout.listrow,row); 
     this.context=context; 
     this.row=row; 

    } 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     View rowView=convertView; 
     /*FilterItem item = (FilterItem)this.getItem(position);*/ 
     if(convertView==null) 
     { 
      inflator=context.getLayoutInflater(); 
      final ViewHolder holder=new ViewHolder(); 
      rowView=inflator.inflate(R.layout.listrow, null); 
      holder.rowText=(TextView)rowView.findViewById(R.id.rowListTextView); 
      rowView.setTag(holder); 

     } 
     final ViewHolder hold=(ViewHolder)rowView.getTag(); 
     hold.rowText.setText(row.get(position)); 

     if(tempPos != position){ 
      hold.rowText.setTextColor(Color.WHITE); 
     } 
     return rowView; 
    } 




} 

static class ViewHolder 
{ 
    TextView rowText; 
} 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_fetures_list, menu); 
    return false; 
} 

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    super.onBackPressed(); 
    overridePendingTransition(R.anim.slide_out_left,R.anim.slide_out_right); 
    this.finish(); 
} 

를 확장으로서 다음에 해당하는 코드가 제대로 작동한다는 것입니다 4.0 setOnItemClickListener()의 변수 "position"이 적절하게 작동합니다. 즉, 0, 1 또는 2를 0, 1 또는 2로 표시하는 것보다 0 또는 1 또는 2를 클릭하면 위치가 0 인 경우와 동일한 작업이 안드로이드 2.3에서 역으로 작동합니다. 그것은 0-8, 1-7, 2-5, 4-4, 5-4 등 8과 같은 자세를 취하고 있습니다 ... 제발 이것을 극복하는 방법을 제안하십시오.

+0

어댑터 클래스의 getView() 메소드가 잘못되었습니다. 코드를 다시 한 번 확인하십시오. –

+0

Hello Venkata Krishna .. getView()에서 잘못된 점을 지적 할 수 있습니까? –

답변

0
public View getView(final int position, View convertView, ViewGroup parent){ 


       ViewHolder holder = null; 
       View rowView = convertView; 


       if (rowView == null) { 

        LayoutInflater inflater = context.getLayoutInflater(); 
       //here give your xml name... 
        rowView = inflater.inflate(R.layout.case_row, null, true); 

        holder = new ViewHolder(); 
        //here get your ids... 
        holder.caseType=(TextView) rowView.findViewById(R.id.caseType); 


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

       //If you want to do some functions with your views do here... 
       //example... 
       holder.caseType.setText("hello android"); 

       rowView.setOnClickListener(new OnClickListener() { 

        @Override 
        public void onClick(View v) { 

         //Handle the listview click event here... 

         } 
       }); 

       return rowView; 

      } 

      class ViewHolder { 
       TextView caseType; 
      } 

위의 코드를 확인하십시오.

관련 문제