Reading
5
Comments
This is very interesting tutorial ( "swipe listview item in android ") , i am going to explain how to create a android listview that can be swipe from left to right and right to left.
You can see the the demo the image above. Now on main thing how we can implement such type of program.
You need two library for this program one is "AndroidSwipelayout-v1.1.8.jar" and other one is "NineOldAndroids-master.zip"
TreeView of the all files use in this project are following -
com.example.swappinglistview
/swappinglistview/src/com/example/swappinglistview/DifferentMenuActivity.java
/swappinglistview/src/com/example/swappinglistview/MainActivity.java
/swappinglistview/src/com/example/swappinglistview/SimpleActivity.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenu.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuAdapter.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuCreator.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuItem.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuLayout.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuListView.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuView.java
TreeView of the all files use in this project are following -
com.example.swappinglistview
/swappinglistview/src/com/example/swappinglistview/DifferentMenuActivity.java
/swappinglistview/src/com/example/swappinglistview/MainActivity.java
/swappinglistview/src/com/example/swappinglistview/SimpleActivity.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenu.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuAdapter.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuCreator.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuItem.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuLayout.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuListView.java
/swappinglistview/src/com/example/swappinglistview/SwipeMenuView.java
Code of SimpleActivity -
package com.example.swappinglistview; import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.ResolveInfo; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.example.swappinglistview.SwipeMenu; import com.example.swappinglistview.SwipeMenuCreator; import com.example.swappinglistview.SwipeMenuItem; import com.example.swappinglistview.SwipeMenuListView; import java.util.List; /** * SwipeMenuListView * Created by baoyz on 15/6/29. */ public class SimpleActivity extends Activity { private List<ApplicationInfo> mAppList; private AppAdapter mAdapter; private SwipeMenuListView mListView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_list); mAppList = getPackageManager().getInstalledApplications(0); mListView = (SwipeMenuListView) findViewById(R.id.listView); mAdapter = new AppAdapter(); mListView.setAdapter(mAdapter); // step 1. create a MenuCreator SwipeMenuCreator creator = new SwipeMenuCreator() { @Override public void create(SwipeMenu menu) { // create "open" item SwipeMenuItem openItem = new SwipeMenuItem( getApplicationContext()); // set item background openItem.setBackground(new ColorDrawable(Color.rgb(0xC9, 0xC9, 0xCE))); // set item width openItem.setWidth(dp2px(90)); // set item title openItem.setTitle("Open"); // set item title fontsize openItem.setTitleSize(18); // set item title font color openItem.setTitleColor(Color.WHITE); // add to menu menu.addMenuItem(openItem); // create "delete" item SwipeMenuItem deleteItem = new SwipeMenuItem( getApplicationContext()); // 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); // step 2. listener item click event mListView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(int position, SwipeMenu menu, int index) { ApplicationInfo item = mAppList.get(position); switch (index) { case 0: // open open(item); break; case 1: // delete // delete(item); mAppList.remove(position); mAdapter.notifyDataSetChanged(); break; } return false; } }); // set SwipeListener mListView.setOnSwipeListener(new SwipeMenuListView.OnSwipeListener() { @Override public void onSwipeStart(int position) { // swipe start } @Override public void onSwipeEnd(int position) { // swipe end } }); // other setting // listView.setCloseInterpolator(new BounceInterpolator()); // test item long click mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getApplicationContext(), position + " long click", Toast.LENGTH_SHORT).show(); return false; } }); } private void delete(ApplicationInfo item) { // delete app try { Intent intent = new Intent(Intent.ACTION_DELETE); intent.setData(Uri.fromParts("package", item.packageName, null)); startActivity(intent); } catch (Exception e) { } } private void open(ApplicationInfo item) { // open app Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(item.packageName); List<ResolveInfo> resolveInfoList = getPackageManager() .queryIntentActivities(resolveIntent, 0); if (resolveInfoList != null && resolveInfoList.size() > 0) { ResolveInfo resolveInfo = resolveInfoList.get(0); String activityPackageName = resolveInfo.activityInfo.packageName; String className = resolveInfo.activityInfo.name; Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName componentName = new ComponentName( activityPackageName, className); intent.setComponent(componentName); startActivity(intent); } } class AppAdapter extends BaseAdapter { @Override public int getCount() { return mAppList.size(); } @Override public ApplicationInfo getItem(int position) { return mAppList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = View.inflate(getApplicationContext(), R.layout.item_list_app, null); new ViewHolder(convertView); } ViewHolder holder = (ViewHolder) convertView.getTag(); ApplicationInfo item = getItem(position); holder.iv_icon.setImageDrawable(item.loadIcon(getPackageManager())); holder.tv_name.setText(item.loadLabel(getPackageManager())); return convertView; } class ViewHolder { ImageView iv_icon; TextView tv_name; public ViewHolder(View view) { iv_icon = (ImageView) view.findViewById(R.id.iv_icon); tv_name = (TextView) view.findViewById(R.id.tv_name); view.setTag(this); } } } private int dp2px(int dp) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics()); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_left) { mListView.setSwipeDirection(SwipeMenuListView.DIRECTION_LEFT); return true; } if (id == R.id.action_right) { mListView.setSwipeDirection(SwipeMenuListView.DIRECTION_RIGHT); return true; } return super.onOptionsItemSelected(item); } }
For more detail you can download this project from here
Download other required library Click here |
5 comments
I have downloaded source code but how to get these 2 libraries"AndroidSwipelayout-v1.1.8.jar" and other one is "NineOldAndroids-master.zip".please reply me.
ReplyDeletedownloads from google :)
Delete1) https://github.com/daimajia/AndroidSwipeLayout/releases/download/v1.1.8/AndroidSwipeLayout-v1.1.8.jar
Delete2) https://github.com/JakeWharton/NineOldAndroids/downloads
I have downloaded Source code and library. Can you please tell me how to combine all together to work properly. As I am beginner to android. Please Help
ReplyDeletei want a link for gradle
ReplyDelete