2015-10-06 78 views
0
 In below code you swipe listview item by your hand but i want when i click on list view item item automatically swipe left to right and display delete button on screen. 
private ListView list; 
    private MyAdapter m_Adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     list = (ListView) findViewById(R.id.listView1); 
     SwipeListView l = null; 
     try { 
      l = new SwipeListView(this); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     l.exec(); 
     m_Adapter = new MyAdapter(); 
     for (int i = 1; i < 30; i++) { 
      // 
      m_Adapter.addItem("Item " + i); 
     } 
     // 
     list.setAdapter(m_Adapter); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    @Override 
    public ListView getListView() { 
     // TODO Auto-generated method stub 
     return list; 
    } 

    @Override 
    public void onSwipeItem(boolean isRight, int position) { 
     // TODO Auto-generated method stub 
     m_Adapter.onSwipeItem(isRight, position); 
    } 

    @Override 
    public void onItemClickListener(ListAdapter adapter, int position) { 
     // TODO Auto-generated method stub 

    } 

    // 
    public class MyAdapter extends BaseAdapter { 

     protected List<String> m_List; 
     private final int INVALID = -1; 
     protected int DELETE_POS = -1; 

     public MyAdapter() { 
      // TODO Auto-generated constructor stub 
      m_List = new ArrayList<String>(); 
     } 

     public void addItem(String item) { 
      // 
      m_List.add(item); 
      notifyDataSetChanged(); 
     } 

     public void addItemAll(List<String> item) { 
      // 
      m_List.addAll(item); 
      notifyDataSetChanged(); 
     } 

     public void onSwipeItem(boolean isRight, int position) { 
      // TODO Auto-generated method stub 
      if (isRight == false) { 
       DELETE_POS = position; 
      } else if (DELETE_POS == position) { 
       DELETE_POS = INVALID; 
      } 
      // 
      notifyDataSetChanged(); 
     } 

     public void deleteItem(int pos) { 
      // 
      m_List.remove(pos); 
      DELETE_POS = INVALID; 
      notifyDataSetChanged(); 
     } 

     @Override 
     public int getCount() { 
      // TODO Auto-generated method stub 
      return m_List.size(); 
     } 

     @Override 
     public String getItem(int position) { 
      // TODO Auto-generated method stub 
      return m_List.get(position); 
     } 

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

     @Override 
     public View getView(final int position, View convertView, 
       ViewGroup parent) { 
      // TODO Auto-generated method stub 
      if (convertView == null) { 
       convertView = LayoutInflater.from(MainActivity.this).inflate(
         R.layout.item, null); 
      } 
      TextView text = ViewHolderPattern.get(convertView, R.id.text); 
      TextView text1 = ViewHolderPattern.get(convertView, R.id.text1); 
      RatingBar ratingBar = (RatingBar) findViewById(R.id.ratingbar); 

      Button delete = ViewHolderPattern.get(convertView, R.id.delete); 
      if (DELETE_POS == position) { 
       delete.setVisibility(View.VISIBLE); 
      } else 
       delete.setVisibility(View.GONE); 
      delete.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        deleteItem(position); 
       } 
      }); 

      text.setText("ssss"); 
      text1.setText("ssss"); 
      //ratingBar.setRating(5); 

      return convertView; 
     } 
    } 

    public static class ViewHolderPattern { 
     // I added a generic return type to reduce the casting noise in client 
     // code 
     @SuppressWarnings("unchecked") 
     public static <T extends View> T get(View view, int id) { 
      SparseArray<View> viewHolder = (SparseArray<View>) view.getTag(); 
      if (viewHolder == null) { 
       viewHolder = new SparseArray<View>(); 
       view.setTag(viewHolder); 
      } 
      View childView = viewHolder.get(id); 
      if (childView == null) { 
       childView = view.findViewById(id); 
       viewHolder.put(id, childView); 
      } 
      return (T) childView; 
     } 
    } 

一个额外swipelistview.java文件.......我想,当你在列表视图项列表视图项刷卡点击从左到右,当点击删除按钮全的ListView项目从listview.I刷卡删除列表视图通过适当的手,但我想在ListView项点击时刻android.click然后刷卡列表视图项,并显示删除按钮ListView项

+0

出于好奇,为什么要改变生态系统的标准行为,通常在用户在屏幕上滑动时执行滑动操作。对点击或触摸进行轻扫操作相当麻烦。想想看。 –

回答