2013-09-09 5 views
0

У меня есть просмотр списка, содержащий элементы textview. Я хочу изменить текст listviews на longclick строки. поскольку мои данные продолжают меняться, я не хочу устанавливать модификатор ссылки на текстовое представление как окончательный. Я использовал держатель вида для сохранения данных во время прокрутки. мой код:изменить содержимое списка в длинном щелчке элемента

static class viewHolder 
{ 
    TextView t1,t2,t3; 
} 

public class myAdapter extends ArrayAdapter<searchData>{ 

     public myAdapter(Context context, int resource, ArrayList<searchData> data) { 
      super(context, resource,data); 
      // TODO Auto-generated constructor stub 

     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
      // TODO Auto-generated method stub 
      final viewHolder holder; 

      if(convertView == null){ 
       LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       convertView = inflater.inflate(R.layout.location_list3, parent, false);  
       holder = new viewHolder(); 
       holder.t1 = (TextView) convertView.findViewById(R.id.textView1); 
       holder.t2 = (TextView) convertView.findViewById(R.id.textView2); 
       holder.t3 = (TextView) convertView.findViewById(R.id.textView_t1); 
       convertView.setTag(holder); 
      } 
      else 
      { 
       holder = (viewHolder) convertView.getTag(); 
      } 
      Typeface typeFace=Typeface.createFromAsset(getAssets(),"fonts/agencyfb-regular.ttf"); 

     // TextView but = (TextView) row.findViewById(R.id.imageButton1); 
      holder.t1.setTypeface(typeFace,typeFace.BOLD); 
      holder.t2.setTypeface(typeFace); 
      holder.t3.setTypeface(typeFace,typeFace.BOLD);    
      holder.t1.setText(dataList.get(position).getName()); 
      holder.t2.setText(dataList.get(position).getStatus()); 
      holder.t3.setText(dataList.get(position).getWaitingTime()); 

      //For adding layout change upon Long Press 

      convertView.setOnLongClickListener(new OnLongClickListener() { 

       @Override 
       public boolean onLongClick(View v) { 
        // TODO Auto-generated method stub 
        Toast.makeText(getApplicationContext(),    "Long Press at position: "+position, Toast.LENGTH_SHORT).show(); 
        //ChangeText 
        return false; 
       } 
      }); 




      return convertView; 
     } 

    } 

ответ

0

Я предполагаю, что это не сработает?

Вам следует попытаться установить Listener вашего ListView, а не ваши представления в ListView. Также используйте OnItemLongClickListener вместо вашего OnLongClickListener.

Так что в вашем фрагменте или деятельности:

listview.OnItemLongClickListener.setOnItemLongClickListener(
    new OnItemLongClickListener() { 

    @Override 
    public boolean onItemLongClick(AdapterView<?> parent, 
     View view, int position, long id) { 

     Object o = listview.getAdapter().getItem(position); 
     //do stuff 

    } 
}); 
+0

какой тип объекта не возвращает? я хочу получить, скажем, как текстовое представление или какой-либо другой элемент управления пользовательского интерфейса. даже путем его литья, я не могу получить доступ к его методам. что делать? –

Смежные вопросы