2014-11-13 3 views
0

Я разработал ListFragment. На этапе itemLongClick() начинается действие. onActivityResult(), я снова установил адаптер, и новое текстовое представление создается динамически. onClick каждого вида в элементе, Toast shoud. Если я реализую onClick() для каждого вида в адаптере, то itemLongClick() не работает.ListView на клик-слушателе

Я приложил мой код ниже:

внутри ListFragment:

@Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 

      @Override 
      public boolean onItemLongClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       clickPosition = position; 
       Intent intent = new Intent(parent.getContext(),AddEventActivity.class); 
       startActivityForResult(intent, CREATE_EVENT); 
       return true; 
      } 
     }); 
    } 

внутри переходника getView():

@Override 
    public View getView(final int position, View convertView, final ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater)parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = (View)inflater.inflate(R.layout.event_listview_items, null); 
     TextView hour = (TextView)view.findViewById(R.id.hour); 
     LinearLayout layout = (LinearLayout)view.findViewById(R.id.layout); 


     hour.setText(hourAL.get(position)); 
     if(eventAL.size() != 0){ 
      for(int i=0;i<eventAL.size();i++){ 
       if(eventAL.get(i).getPosition() == position){ 
        for(int j =0;j<eventAL.get(i).eventName.size();j++){ 
         LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LayoutParams.FILL_PARENT,1.0f); 
         params.setMargins(3, 3, 3, 3); 
         final TextView txt = new TextView(parent.getContext()); 
         txt.setId(++textid); 
         txt.setBackgroundColor(Color.GRAY); 
         txt.setLayoutParams(params); 
         txt.setText(eventAL.get(i).eventName.get(j)); 
         layout.addView(txt); 

         txt.setOnClickListener(new OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           Toast.makeText(parent.getContext(), txt.getId() + " clicked", Toast.LENGTH_SHORT).show(); 

          } 
         }); 
        } 
       } 
      } 
     } 
     return view; 
    } 

Пожалуйста кто наставит меня, как реализовать обе функции.

+0

Мега, вы можете написать свой метод LongClick внутри метода getView(). При нажатии на convertView вы можете выполнять все, что захотите. –

+0

Либо вы дали лизать своему ребенку предмет или весь предмет, оба не работают в вашем случае. –

+0

try 'txt.getId(). ToString' in Toast ... –

ответ

1

Я нашел решение. Для моих динамических просмотров я сделал setLongClickable() как true.

+0

Гуд услышать, что у тебя есть решение .... –