2016-03-28 12 views
0

//フラグメントからのArrayListを充填スクロール問題

gridmodel = new TypeTruckPogo("Truck 14 wheel",-1,false); 
     list.add(gridmodel); 
     gridmodel = new TypeTruckPogo("Truck 16 wheel",-1,false); 
     list.add(gridmodel); 

     final TypeOfTruckAdapter truckAdapter=new TypeOfTruckAdapter(context, list); 
     truckListView.setAdapter(truckAdapter); 

//マイPOGO CLASS

public class TypeTruckPogo{ 
    String typeOfTruckName; 
    int nmbrOfTruck; 
    boolean isEditTextVisiable; 

    public TypeTruckPogo(String typeOfTruckName,int nmbrOfTruck,boolean isEditTextVisiable){ 
     this.typeOfTruckName=typeOfTruckName; 
     this.nmbrOfTruck=nmbrOfTruck; 
     this.isEditTextVisiable=isEditTextVisiable; 
    } 

    public String getTypeOfTruckName() { 
     return typeOfTruckName; 
    } 

    public String setTypeOfTruckName(String typeOfTruckName) { 
     this.typeOfTruckName = typeOfTruckName; 
     return typeOfTruckName; 
    } 

    public int getNmbrOfTruck() { 
     return nmbrOfTruck; 
    } 

    public Integer setNmbrOfTruck(int nmbrOfTruck) { 
     this.nmbrOfTruck = nmbrOfTruck; 
     return nmbrOfTruck; 
    } 

    public boolean isEditTextVisiable() { 
     return isEditTextVisiable; 
    } 

    public Boolean setIsEditTextVisiable(boolean isEditTextVisiable) { 
     this.isEditTextVisiable = isEditTextVisiable; 
     return isEditTextVisiable; 
    } 
} 

//私のアダプタクラス、このクラスはでは、リスト内の20アイテムを持っています最初に8つのアイテムを表示しているときに、ユーザーが単一行を押してからeditTextを表示し、同じ位置を2回押すとeditTextが呼び出し可能になります。しかし、ユーザーが任意の位置をタップすると(位置0をタップしたとします) editTextは表示されますが、下にスクロールすると、他のeditTextもvになりますいつのまにかポジション8いつも15.YY HELP APPRECIATED !!!!単一の行は、あなたがあなたのアダプタでデフォルトのテキストの色を設定elseステートメントを使用する必要がありますのTextViewとEDITTEXT

public class TypeOfTruckAdapter extends BaseAdapter{ 
List<TypeTruckPogo> list; 
Context context; 
LayoutInflater inflater; 
public String[] Current; 
TypeTruckPogo typeTruckPogo; 
public static HashMap<Integer,String> truckHashMap=new HashMap<Integer,String>(); 
public TypeOfTruckAdapter(Context context,List<TypeTruckPogo> list) { 
    this.list = list; 
    this.context = context; 
    for(int i=0;i<list.size();i++) 
    { 
     truckHashMap.put(i,""); 
    } 
} 
@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return list.size(); 
} 

@Override 
public Object getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 



class Viewholder{ 
    TextView name; 
    EditText nmbrOfTruck; 
    int ref; 

    Viewholder(View view) { 

     name = (TextView) view.findViewById(R.id.textView1); 
     nmbrOfTruck = (EditText) view.findViewById(R.id.et_nmbr_of_truck_id); 
    } 

} 
@Override 
public View getView(final int position, View convertView, ViewGroup parent) { 
    final Viewholder holder; 
    typeTruckPogo = list.get(position); 
    if(convertView==null){ 
     inflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     convertView = inflater.inflate(R.layout.single_row_for_type_of_truck, parent, false); 
     holder = new Viewholder(convertView); 
     convertView.setTag(holder); 
    }else{ 
     holder = (Viewholder)convertView.getTag(); 
    } 
    // For position zero i have to set the text color to blue color,else dark gray color 
    if(position==0){ 
     holder.name.setTextColor(context.getResources().getColor(R.color.blue_color)); 
    }else{ 
     holder.name.setTextColor(context.getResources().getColor(R.color.darkgray)); 
    } 
    // setting the name on the textview 
    holder.name.setText(list.get(position).getTypeOfTruckName()); 
    //setting the tag on edittext 
    holder.nmbrOfTruck.setTag(position); 
    //setting the viewholder position 
    holder.ref = position; 

    // clicking on listview making edittext to appear (initially edittext is invisiable) 
    // if edittext is visiable make it invisiable and if it is invisiable make it visiable 
    convertView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      if (v.findViewById(R.id.et_nmbr_of_truck_id).getVisibility() == View.VISIBLE) { 
       v.findViewById(R.id.et_nmbr_of_truck_id).setVisibility(View.INVISIBLE); 
      } else { 
       v.findViewById(R.id.et_nmbr_of_truck_id).setVisibility(View.VISIBLE); 
      } 

     } 
    }); 
    // if user write on editText save the input by the user in specified position 
    //truckHashMap is hashmap where I saving the position as a key and value as the user Input 

    holder.nmbrOfTruck.addTextChangedListener(new TextWatcher() { 

     public void onTextChanged(CharSequence s, int start, 
            int before, int count) { 

     } 

     public void beforeTextChanged(CharSequence s, int start, 
             int count, int after) { 
      // TODO Auto-generated method stub 

     } 

     public void afterTextChanged(Editable s) { 
      Current = new String[holder.ref]; 

      truckHashMap.put(position, s.toString().trim()); 
     } 
    }); 
    // Setting the User Input at specified Position 
    holder.nmbrOfTruck.setText(truckHashMap.get(position)); 

    Config.colorFont(context, null, holder.name, null); 
    return convertView; 
} 
+1

は '位置== 0 'を使用すると、リストビューをスクロールしながら、すべての時間を変更されていますが、モデルクラスに関連するいくつかのインデックスを使用し、それが –

答えて

2

が含まれています。

... 
if(position==0){ 
      holder.name.setTextColor(context.getResources().getColor(R.color.blue_color)); 
     } else { 
      // here set your default text color black for example 
      holder.name.setTextColor(context.getResources().getColor(R.color.black_color)); 
} 
... 

はそれが役に立てば幸い!

+0

おかげで動作するよりも、そのインデックスに基づいてあなたの状態を置くならば働いた!! :) Ivan –

+0

私はそれをうれしく思います。私の答えを受け入れてください。 –

+0

私はそれを受け入れました:) –

0

ここで、あなたのelseの状態は?

if(position==0) 
    { 
       holder.name.setTextColor(context.getResources().getColor(R.color.blue_color)); 
    } else { 

    // Calling when if Condition not Satisfied . 
      holder.name.setTextColor(context.getResources().getColor("Your_Color")); 
      } 
関連する問題