2016-04-07 5 views
0

Я использую this как проведите по удалению. но у меня возникла проблема с реализацией только элемента меню удаления из списка.Проведите по удалению Не работает из верхнего элемента списка, но из последнего элемента списка.

То, что я делаю, создает только один элемент удаления. Я действительно не хочу использовать какой-либо другой элемент, такой как Open, как показано в демо.

вот мой дизайн

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#dadada"> 


    <RelativeLayout     
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/segmented_buttons"> 

     <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/swipe_refresh_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <FrameLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:clickable="false" 
       android:orientation="vertical"> 


       <!--<ScrollView--> 
       <!--android:layout_width="match_parent"--> 
       <!--android:layout_height="match_parent"--> 
       <!--android:layout_gravity="center"--> 
       <!--android:gravity="center"--> 
       <!--android:clickable="false">--> 
       <TextView 
        android:id="@+id/swipeRefreshLayout_emptyView" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_gravity="center|center_vertical" 
        android:enabled="false" 
        android:gravity="center" 
        android:visibility="gone" /> 


       <com.baoyz.swipemenulistview.SwipeMenuListView 
        android:id="@+id/listView" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:clickable="true" 
        android:clipChildren="false" 
        android:divider="@android:color/transparent" 

        android:dividerHeight="5.0sp" /> 

       <!--</ScrollView>--> 
      </FrameLayout> 


     </android.support.v4.widget.SwipeRefreshLayout> 
    </RelativeLayout> 


</RelativeLayout> 

и вот как я создаю мое меню в моем фрагменте

SwipeMenuCreator creator = new SwipeMenuCreator() { 

     @Override 
     public void create(SwipeMenu menu) { 
       // create "delete" item 
      SwipeMenuItem deleteItem = new SwipeMenuItem(
        getActivity()); 
      // set item background 
      deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9, 
        0x3F, 0x25))); 
      // set item width 
      deleteItem.setWidth(dp2px(90)); 
      // set a icon 
      deleteItem.setIcon(R.drawable.ic_delete); 
      // add to menu 
      menu.addMenuItem(deleteItem); 
     } 
    }; 

вот как я устанавливаю создатель

// set creator 
    mListView.setMenuCreator(creator); 

Моя проблема У меня есть несколько проблем, связанных с удалением, как уже упоминалось

  1. Когда у меня слишком много данных в списке, говорим, что количество строк 10 и нужно прокрутить вниз, опция удаления работы как очарование даже из первой строки списка.
  2. Когда в списке есть меньший элемент или я продолжаю удалять элементы снизу, я имею в виду последнюю строку, когда есть меньше предметов, которые не нужно прокручивать вниз, не удаляет гладко, это занимает много раз, чтобы обновить список, или открыть и закрыть снова меню справа налево, многократно нажимает на меню удаления, а затем удаляет некоторые из них, когда слишком много попыток.
  3. Я не знаю, в чем проблема, но когда я сделал два меню, например «Открыть» и «Удалить», как показано в демо, я сделал как открытую, так и удаленную кнопку удаления, так что в случае «0» и «Случай 1», Я написал код удаления, затем я заметил, что удаление работает каждый раз, когда я касаюсь открытого, но снова, когда я касаюсь его удалением, несколько раз удаляет элемент или какое-то время, которое требуется для многих попыток.

Что может быть проблемой? Любая догадка? Есть ли какая-нибудь работа?

И да Наверняка, когда я касаюсь меню «Удалить», он дает мне журнал, смотри вниз внизу. Он показывает мне это в журнале, когда я прикасаюсь, чтобы удалить и удалить, на самом деле не работает, но когда он начало работы этого сообщения в журнале никогда не появляется.

D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN

Редактировать Один

Вот весь мой код адаптера:

public class SwipeListOfferAdapter extends BaseAdapter { 
    private Activity activity; 
    private LayoutInflater inflater; 
    private ArrayList<OfferStatusData> offerList; 
    OfferStatusData offerStatusData; 


    public SwipeListOfferAdapter(Activity activity, List<OfferStatusData> offerList) { 
     this.activity = activity; 
     this.offerList = (ArrayList)offerList; 
     inflater = (LayoutInflater) activity 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     // bgColors = activity.getApplicationContext().getResources().getStringArray(R.array.movie_serial_bg); 
    } 

    @Override 
    public int getCount() { 
     return offerList.size(); 
    } 

    @Override 
    public Object getItem(int location) { 
     return offerList.get(location); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder ; 


     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.row_offer_status, null); 

      holder = new ViewHolder(); 
     // holder.tvCustomerName = (TextView) convertView.findViewById(R.id.tv_row_customer_name); 
      holder.tvOfferName = (TextView) convertView.findViewById(R.id.row_offer_name); 
      // holder.tvEmail = (TextView) convertView.findViewById(R.id.row_email); 
      holder.tvPhoneNumber = (TextView) convertView.findViewById(R.id.row_phone_number); 
      holder.tvAddress = (TextView) convertView.findViewById(R.id.row_address); 
      holder.tvTmcBrand = (TextView) convertView.findViewById(R.id.row_tmc_brand); 
      holder.tvStartEndTime = (TextView) convertView.findViewById(R.id.row_offer_time); 
      holder.tvNoOfPerson = (TextView) convertView.findViewById(R.id.tv_row_total_person); 
      holder.tvNoOfAcceptors = (TextView) convertView.findViewById(R.id.tv_row_total_acceptors); 
      holder.tvMonth = (TextView) convertView.findViewById(R.id.tv_row_month); 
      holder.tvDay = (TextView) convertView.findViewById(R.id.tv_row_day); 
      // holder.tvCustomerName = (TextView) convertView.findViewById(R.id.tv_row_customer_name); 

      convertView.setTag(holder); 

     } 
     else { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     if(offerList.size()>0){ 

      offerStatusData = (OfferStatusData)offerList.get(position); 
      // holder.tvCustomerName.setText(offerStatusData.getName()); 
      holder.tvOfferName.setText(offerStatusData.getOffer_name()); 
      // holder.tvEmail.setText(offerStatusData.getEmail()); 
      holder.tvPhoneNumber.setText(offerStatusData.getPhone_number()); 
      holder.tvAddress.setText(offerStatusData.getAddress()); 
      holder.tvTmcBrand.setText(offerStatusData.getTmc_brand()); 
      holder.tvStartEndTime.setText(offerStatusData.getStart_time()+"-"+offerStatusData.getEnd_time()); 
      holder.tvNoOfPerson.setText(offerStatusData.getNo_of_person()); 
      holder.tvNoOfPerson.setTextColor(Color.parseColor("#F66D0D")); 
      holder.tvNoOfAcceptors.setText(offerStatusData.getCurrent_acceptors()+"/"+offerStatusData.getNo_of_person()); 
      holder.tvNoOfAcceptors.setTextColor(Color.parseColor("#2B5BD2")); 
// holder.tvMonth.setText("july"); 
//    holder.tvDay.setText("29"); 
      String dateFromService = offerStatusData.getDate(); 
      String[] monthFromService = dateFromService.split("-"); 
      Log.d("date split", dateFromService.toString()); 
      holder.tvDay.setText(monthFromService[2].toString()); 
      holder.tvDay.setTextColor(Color.parseColor("#57902B")); 
      holder.tvMonth.setText(getMonth(Integer.parseInt(monthFromService[1]))); 
      holder.tvMonth.setTextColor(Color.parseColor("#57902B")); 
     } 


     return convertView; 



//  String color = bgColors[position % bgColors.length]; 
//  serial.setBackgroundColor(Color.parseColor(color)); 


    } 
    void delete (int post){ 


     offerList.remove(post); 
    } 
    class ViewHolder{ 

     TextView tvOfferName,tvPhoneNumber,tvAddress, 
       tvTmcBrand,tvStartEndTime,tvNoOfPerson,tvNoOfAcceptors,tvMonth,tvDay; 
    } 
    public String getMonth(int month) { 
     return new DateFormatSymbols().getShortMonths()[month-1]; 
     // return new DateFormatSymbols().getMonths()[month-1]; 
    } 
} 

Так что я действительно не знать, что такое t главная причина этого - мне не оставалось никакой подсказки. Скажите, пожалуйста, какая проблема.

+0

, что вы сделали в адаптере? пожалуйста, разделите код? –

+0

Мне нужно разделить весь код или только код GetView? –

+0

Я хочу проверить, что вы сделали в адаптере после удаления строки из списка. –

ответ

0

Попробуйте это,

listView.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      int action = event.getAction(); 
      switch (action) { 
      case MotionEvent.ACTION_DOWN: 
       // Disallow View pager to intercept touch events. 
       v.getParent().requestDisallowInterceptTouchEvent(true); 
       break; 

      case MotionEvent.ACTION_UP: 
       // Allow View pager to intercept touch events. 
       // v.getParent().requestDisallowInterceptTouchEvent(false); 
       break; 
      } 

      // Handle Listview touch events. 
      v.onTouchEvent(event); 
      return true; 

     } 
    }); 
+0

Я думаю, что это его, Intercept, я думаю, что это будет работать, позвольте мне попробовать –

+0

nopes она до сих пор не работает –

+0

givign меня же журнал D/ViewRootImpl: ViewPostImeInputStage ACTION_DOWN –

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