Hello Dorid Guys,
Yesterday, I stuck in a weird situation , the android popup button will not closed on pressing back
button . On android physical back button pressed I am calling popupWindow.dismiss();
But it not works for me :( .
After spending 1-2 hrs on it , finally I Solved this issue.
I am Doing following three steps :
1. Initializing the popup window first:
View view = LayoutInflater.from(MyDialogActivity.this).inflate(R.layout.poup_icon, null);
popupWindow = new PopupWindow(view, LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, true);
2. After initialization call this
popupWindow.setBackgroundDrawable(new BitmapDrawable());
3. Finally, at the end inside your back button pressed code call this
@Override
public void onBackPressed() {
if(popupWindow != null)
popupWindow.dismiss();
else
super.onBackPressed();
}
Here is my full source code:
package com.popup.activities;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.PopupWindow;
public class MyDialogActivity extends Activity {
Context mContext = MyDialogActivity.this;
PopupWindow popupWindow;
ImageView emojiIcon;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_dialog);
ImageView emojiIcon = (ImageView) findViewById(R.id.motekon_icon);
//onclick of icom
emojiIcon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
View view = LayoutInflater.from(mContext).inflate(R.layout.popup_ icon, null);
popupWindow = new PopupWindow(view, LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT, true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);
final GridView gridView = (GridView)view.
findViewById(R.id.gridView1);
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View v,
int position, long arg3) {
popupWindow.dismiss();
}
});
gridView.setAdapter(your adapter);
}
});
}
@Override
protected void onPause() {
super.onPause();
if (popupWindow != null)
popupWindow.dismiss();
}
@Override
public void onBackPressed() {
if (popupWindow != null)
popupWindow.dismiss();
else
super.onBackPressed();
}
}
This is what I am doing in my code and it solve my problem.
May this will help some one.
Enjoy Coding :)
Thursday 6 December 2012
Thursday, December 06, 2012
Close Popup window on click of backbuttun in android
Mukesh Kumar
close popup window in android
,
Dismiss popup window on back pressed in android
,
dismiss popup window.
3
comments
Tuesday 13 November 2012
Tuesday, November 13, 2012
Android horizontal listview | horizontal listview | android listview | android custom horizontal listview
Mukesh Kumar
android listview example
,
android-listview-swipe
,
Horizontal View Swiping
,
List View in android.Horizontal listview in android
,
Show listview horizontally
72
comments
Hello Droid Guys,
In android , there is ListView tag in xml, with the help of this we can show
list view but its apperance is vertically not horizontally and if you want to show
a horizontal listview then you have to make your custom view,
1. Create a new project in Eclipse File New ⇒ Android ⇒ Application Project and fill the required details.
2. Create required files needed to generate a list view. I am using activity_horizontal_list_view.xml as list view and created a new xml file for single list item named listview_item.xml.
activity_horizontal_list_view.xml
<?xml version="1.0" encoding="utf-8"?>
In android , there is ListView tag in xml, with the help of this we can show
list view but its apperance is vertically not horizontally and if you want to show
a horizontal listview then you have to make your custom view,
1. Create a new project in Eclipse File New ⇒ Android ⇒ Application Project and fill the required details.
2. Create required files needed to generate a list view. I am using activity_horizontal_list_view.xml as list view and created a new xml file for single list item named listview_item.xml.
Horizontal listView |
activity_horizontal_list_view.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical" >
<ImageView
android:id="@+id/selected_imageview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/gallery_relative_layout"
android:layout_marginLeft="30dip"
android:layout_marginRight="30dip"
android:layout_marginTop="30dip"
android:background="@drawable/natureimage1"
/>
<RelativeLayout
android:id="@+id/gallery_relative_layout"
android:layout_width="wrap_content"
android:layout_height="150dip"
android:layout_alignParentBottom="true"
android:orientation="horizontal" >
<com.mukesh.ui.HorizontalView
android:id="@+id/gallery"
android:layout_width="match_parent"
android:layout_height="75dp"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="15dp"
android:smoothScrollbar="true"
android:spacing="20dip" >
</com.mukesh.ui.HorizontalView>
</RelativeLayout>
</RelativeLayout>
listview_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/icon"
android:layout_width="72dp"
android:layout_height="75dp" />
</RelativeLayout>
3. HorizontalView.Java : These class help us to create view. This is my custom
view
class which help us in showing listview Horizontally.
package com.mukesh.ui;
import java.util.LinkedList;
import java.util.Queue;
import android.content.Context;
import android.database.DataSetObserver;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.OnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.Scroller;
public class HorizontalView extends AdapterView {
public boolean mAlwaysOverrideTouch = true;
protected ListAdapter mAdapter;
private int mLeftViewIndex = -1;
private int mRightViewIndex = 0;
protected int mCurrentX;
protected int mNextX;
private int mMaxX = Integer.MAX_VALUE;
private int mDisplayOffset = 0;
protected Scroller mScroller;
private GestureDetector mGesture;
private Queue mRemovedViewQueue = new LinkedList();
private OnItemSelectedListener mOnItemSelected;
private OnItemClickListener mOnItemClicked;
private OnItemLongClickListener mOnItemLongClicked;
private boolean mDataChanged = false;
public HorizontalView(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
private synchronized void initView() {
mLeftViewIndex = -1;
mRightViewIndex = 0;
mDisplayOffset = 0;
mCurrentX = 0;
mNextX = 0;
mMaxX = Integer.MAX_VALUE;
mScroller = new Scroller(getContext());
mGesture = new GestureDetector(getContext(), mOnGesture);
}
@Override
public void setOnItemSelectedListener(
AdapterView.OnItemSelectedListener listener) {
mOnItemSelected = listener;
}
@Override
public void setOnItemClickListener(AdapterView.OnItemClickListener listener) {
mOnItemClicked = listener;
}
@Override
public void setOnItemLongClickListener(
AdapterView.OnItemLongClickListener listener) {
mOnItemLongClicked = listener;
}
private DataSetObserver mDataObserver = new DataSetObserver() {
@Override
public void onChanged() {
synchronized (HorizontalView.this) {
mDataChanged = true;
}
invalidate();
requestLayout();
}
@Override
public void onInvalidated() {
reset();
invalidate();
requestLayout();
}
};
@Override
public ListAdapter getAdapter() {
return mAdapter;
}
@Override
public View getSelectedView() {
// TODO: implement
return null;
}
@Override
public void setAdapter(ListAdapter adapter) {
if (mAdapter != null) {
mAdapter.unregisterDataSetObserver(mDataObserver);
}
mAdapter = adapter;
mAdapter.registerDataSetObserver(mDataObserver);
reset();
}
private synchronized void reset() {
initView();
removeAllViewsInLayout();
requestLayout();
}
@Override
public void setSelection(int position) {
// TODO: implement
}
private void addAndMeasureChild(final View child, int viewPos) {
LayoutParams params = child.getLayoutParams();
if (params == null) {
params = new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
}
addViewInLayout(child, viewPos, params, true);
child.measure(
MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.AT_MOST),
MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.AT_MOST));
}
@Override
protected synchronized void onLayout(boolean changed, int left, int top,
int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (mAdapter == null) {
return;
}
if (mDataChanged) {
int oldCurrentX = mCurrentX;
initView();
removeAllViewsInLayout();
mNextX = oldCurrentX;
mDataChanged = false;
}
if (mScroller.computeScrollOffset()) {
int scrollx = mScroller.getCurrX();
mNextX = scrollx;
}
if (mNextX <= 0) {
mNextX = 0;
mScroller.forceFinished(true);
}
if (mNextX >= mMaxX) {
mNextX = mMaxX;
mScroller.forceFinished(true);
}
int dx = mCurrentX - mNextX;
// removeNonVisibleItems(dx);
fillList(dx);
positionItems(dx);
mCurrentX = mNextX;
if (!mScroller.isFinished()) {
post(new Runnable() {
@Override
public void run() {
requestLayout();
}
});
}
}
private void fillList(final int dx) {
int edge = 0;
View child = getChildAt(getChildCount() - 1);
if (child != null) {
edge = child.getRight();
}
fillListRight(edge, dx);
edge = 0;
child = getChildAt(0);
if (child != null) {
edge = child.getLeft();
}
fillListLeft(edge, dx);
}
private void fillListRight(int rightEdge, final int dx) {
while (rightEdge + dx < getWidth()
&& mRightViewIndex < mAdapter.getCount()) {
View child = mAdapter.getView(mRightViewIndex,
mRemovedViewQueue.poll(), this);
addAndMeasureChild(child, -1);
rightEdge += child.getMeasuredWidth();
if (mRightViewIndex == mAdapter.getCount() - 1) {
mMaxX = mCurrentX + rightEdge - getWidth();
}
if (mMaxX < 0) {
mMaxX = 0;
}
mRightViewIndex++;
}
}
private void fillListLeft(int leftEdge, final int dx) {
while (leftEdge + dx > 0 && mLeftViewIndex >= 0) {
View child = mAdapter.getView(mLeftViewIndex,
mRemovedViewQueue.poll(), this);
addAndMeasureChild(child, 0);
leftEdge -= child.getMeasuredWidth();
mLeftViewIndex--;
mDisplayOffset -= child.getMeasuredWidth();
}
}
/*
* private void removeNonVisibleItems(final int dx) { View child =
* getChildAt(0); while(child != null && child.getRight() + dx <= 0) {
* mDisplayOffset += child.getMeasuredWidth();
* mRemovedViewQueue.offer(child); removeViewInLayout(child);
* mLeftViewIndex++; child = getChildAt(0);
*
* }
*
* child = getChildAt(getChildCount()-1); while(child != null &&
* child.getLeft() + dx >= getWidth()) { mRemovedViewQueue.offer(child);
* removeViewInLayout(child); mRightViewIndex--; child =
* getChildAt(getChildCount()-1); } }
*/
private void positionItems(final int dx) {
if (getChildCount() > 0) {
mDisplayOffset += dx;
int left = mDisplayOffset;
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
int childWidth = child.getMeasuredWidth();
child.layout(left, 0, left + childWidth,
child.getMeasuredHeight());
left += childWidth;
}
}
}
public synchronized void scrollTo(int x) {
mScroller.startScroll(mNextX, 0, x - mNextX, 0);
requestLayout();
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
boolean handled = super.dispatchTouchEvent(ev);
handled |= mGesture.onTouchEvent(ev);
return handled;
}
protected boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
synchronized (HorizontalView.this) {
mScroller.fling(mNextX, 0, (int) -velocityX, 0, 0, mMaxX, 0, 0);
}
requestLayout();
return true;
}
protected boolean onDown(MotionEvent e) {
mScroller.forceFinished(true);
return true;
}
private OnGestureListener mOnGesture = new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
return HorizontalView.this.onDown(e);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
return HorizontalView.this.onFling(e1, e2, velocityX, velocityY);
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
synchronized (HorizontalView.this) {
mNextX += (int) distanceX;
}
requestLayout();
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
if (isEventWithinView(e, child)) {
if (mOnItemClicked != null) {
mOnItemClicked.onItemClick(HorizontalView.this, child,
mLeftViewIndex + 1 + i,
mAdapter.getItemId(mLeftViewIndex + 1 + i));
}
if (mOnItemSelected != null) {
mOnItemSelected.onItemSelected(HorizontalView.this,
child, mLeftViewIndex + 1 + i,
mAdapter.getItemId(mLeftViewIndex + 1 + i));
}
break;
}
}
return true;
}
@Override
public void onLongPress(MotionEvent e) {
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
View child = getChildAt(i);
if (isEventWithinView(e, child)) {
if (mOnItemLongClicked != null) {
mOnItemLongClicked.onItemLongClick(HorizontalView.this,
child, mLeftViewIndex + 1 + i,
mAdapter.getItemId(mLeftViewIndex + 1 + i));
}
break;
}
}
}
private boolean isEventWithinView(MotionEvent e, View child) {
Rect viewRect = new Rect();
int[] childPosition = new int[2];
child.getLocationOnScreen(childPosition);
int left = childPosition[0];
int right = left + child.getWidth();
int top = childPosition[1];
int bottom = top + child.getHeight();
viewRect.set(left, top, right, bottom);
return viewRect.contains((int) e.getRawX(), (int) e.getRawY());
}
};
}
4. Now my Activity class(
HorizontalListView.java ) and adapter class
(HorizontalImageAdapter.java )
A.
HorizontalListView.java
package com.mukesh.horizontallistview;
import java.util.ArrayList;
import java.util.List;
import com.mukesh.ui.HorizontalView;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.Drawable;
public class HorizontalListView extends Activity {
private List drawables;
private HorizontalImageAdapter imageAdapter;
private HorizontalView listView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_horizontal_list_view);
listView = (HorizontalView) findViewById(R.id.gallery);
getDrawablesList();
setupUI();
}
private void setupUI() {
imageAdapter = new HorizontalImageAdapter(this, drawables);
listView.setAdapter(imageAdapter);
}
private void getDrawablesList() {
drawables = new ArrayList();
drawables.add(getResources().getDrawable(R.drawable.natureimage1));
drawables.add(getResources().getDrawable(R.drawable.natureimage2));
drawables.add(getResources().getDrawable(R.drawable.natureimage3));
drawables.add(getResources().getDrawable(R.drawable.natureimage4));
drawables.add(getResources().getDrawable(R.drawable.natureimage5));
drawables.add(getResources().getDrawable(R.drawable.natureimage6));
drawables.add(getResources().getDrawable(R.drawable.natureimage7));
drawables.add(getResources().getDrawable(R.drawable.natureimage8));
drawables.add(getResources().getDrawable(R.drawable.natureimage9));
drawables.add(getResources().getDrawable(R.drawable.natureimage10));
drawables.add(getResources().getDrawable(R.drawable.natureimage12));
drawables.add(getResources().getDrawable(R.drawable.natureimage13));
drawables.add(getResources().getDrawable(R.drawable.natureimage15));
}
}
B. HorizontalImageAdapter.java
package com.mukesh.horizontallistview; import java.util.List; import android.app.Activity; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; public class HorizontalImageAdapter extends BaseAdapter { private Activity context; private static ImageView imageView; private List plotsImages; private static ViewHolder holder; private LayoutInflater l_Inflater; public HorizontalImageAdapter(Activity context, List plotsImages) { this.context = context; this.plotsImages = plotsImages; l_Inflater = LayoutInflater.from(context); } @Override public int getCount() { return plotsImages.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { holder = new ViewHolder(); convertView = l_Inflater.inflate(R.layout.listview_item, null); holder = new ViewHolder(); holder.imageView = (ImageView) convertView.findViewById(R.id.icon); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.imageView.setImageDrawable(plotsImages.get(position)); return convertView; } private static class ViewHolder { ImageView imageView; } }
This is what I am doing to show Horizontal listviw in android.
Cheers :)
Enjoy Coding....
Thursday 8 November 2012
Thursday, November 08, 2012
turn on or off the wifi connection in android Programatically
Mukesh Kumar
programatically enable adn disble the wifi
,
turn off wifi in android
,
turn on wifi in android
,
wifi connection in android
No comments
Hello Android Guys,
This is a simple tutorial which covers following parts:
1. Programatically turn on or turn off the wifi connection without going to setting option
in android. For this you have to do two things
A. Passing Permission inside your AndroidManifest.xml file:
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
B. Inside your Activity
I. For turning off the wifi
WifiManager wifiManager = (WifiManager)context.getSystemService
(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(false);
II. For turning on the wifi
WifiManager wifiManager = (WifiManager)context.getSystemService
(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);
Hope , this will Help some one.
Cheers :)
Happy Coding :)
Thursday, November 08, 2012
Can't create handler inside thread that has not called Looper.prepare()
Hello Friend ,
Today, I Stuck with a Weird issue. Calling a thread inside ui thread handler. I am facing
"Can't create handler inside thread that has not called Looper.prepare()" error.
After spending lots of time finally , my problem is fixed. Here is my approach.
1. Calling the Looper.prepare() just next run
2. Calling Looper.loop()
3. Finally you need to destroy or kill your looper using-
Looper.getMyLooper().quit()
.Here is my Code,
Note: Please declare this variable in your class private volatile Looper mMyLooper;
private Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg) {
final SyncRequestManager test = new SyncRequestManager(Test.this);
try {
message = message.replaceAll("\n", "");
progressDialog= ProgressDialog.show(Test.this,
"", "Shairing please wait....",true);
new Thread() {
public void run() {
try{
Looper.prepare();
JSONObject jsonObject = test.postOnFacebookWall(mess age,byteArray);
JSONObject response = jsonObject.getJSONObject("response");
final String iconUrl = response.getString("icon");
Log.i(" Response" , ""+response);
Log.i(" Icon" , ""+iconUrl);
final FacebookUtil fbUtil = new FacebookUtil(ShareMotekon.this);
fbUtil.postMessageOnWall(message, iconUrl,byteArray);
sleep(8000);
} catch (Exception e) {
Log.d("Exception", e.getMessage());
}
progressDialog.dismiss();
mhandler.sendEmptyMessage(0);
}
}.start();
} catch (Exception e) {
e.printStackTrace();
}
}
};
private Handler mhandler = new Handler() {
@Override
public void handleMessage(Message msg) {
btnNext.setEnabled(true);
Toast.makeText(ShareMotekon.this,
"Message Shared Successfully!", Toast.LENGTH_LONG).show();
Log.d("INSIDE HANDLER","FB SHARE");
myLooper = Looper.myLooper();
Looper.loop();
myLooper.quit();
}
};
May , this will help some one.
Enjoy Coding :)
Tuesday 23 October 2012
Tuesday, October 23, 2012
Android Search Functionality with ListView same as Google search functionality
Mukesh Kumar
Android
,
android search bar
,
custom listview search
,
google like search android app
,
google search functionality
,
list view search in android
,
listview
,
search functionality on listview
No comments
Hello Friends,
Hello Friends , have you searching for Google like search functionality in your Android
application ??
Search bar in android |
search icon inside edit text |
1. Create a new project in Eclipse File New ⇒ Android ⇒ Application Project and fill the required details.
2. Create required files needed to generate a listview. I am using my default activity_main.xml as listview and created a new xml file for single listitem named listview.xml.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/EditText01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@android:drawable/ic_menu_search"
android:hint="Search" >
</EditText>
<ListView
android:id="@+id/ListView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
listview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/background_dark"
android:gravity="left|center"
android:paddingBottom="5px"
android:paddingLeft="5px"
android:paddingTop="5px" >
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10px"
android:textColor="#0099CC"
android:textSize="20px"
android:textStyle="bold" >
</TextView>
</LinearLayout>
MainActivity.java
package com.mukesh.customsearch;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
EditText edittext;
ListView listview;
String[] text = { "One", "HTC One X", "Samsung Galaxy S3", "Samsung
Galaxy Note 800", "HTC Sense", "HTC Sensation XE", "HTC Wildfire S",
"HTC Wildfire", "Wildfire S", "HTC" };
int textlength = 0;
ArrayList<String> text_sort = new ArrayList<String>();
ArrayList<Integer> image_sort = new ArrayList<Integer>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edittext = (EditText) findViewById(R.id.EditText01);
listview = (ListView) findViewById(R.id.ListView01);
listview.setAdapter(new CustomAdapter(text));
edittext.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textlength = edittext.getText().length();
text_sort.clear();
image_sort.clear();
for (int i = 0; i < text.length; i++) {
String name = text[i];
String searchtext = edittext.getText()
.toString();
if (textlength <= text[i].length()) {
if (name.toLowerCase().indexOf
(searchtext.toLowerCase())!= -1) {
text_sort.add(text[i]);
}
}
}
listview.setAdapter(new CustomAdapter(text_sort));
}
});
}
class CustomAdapter extends BaseAdapter {
String[] data_text;
CustomAdapter() {
}
CustomAdapter(String[] text) {
data_text = text;
}
CustomAdapter(ArrayList<String> text) {
data_text = new String[text.size()];
for (int i = 0; i < text.size(); i++) {
data_text[i] = text.get(i);
}
}
public int getCount() {
return data_text.length;
}
public String getItem(int position) {
return null;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView,
ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row;
row = inflater.inflate(R.layout.listview, parent, false);
TextView textview = (TextView) row.findViewById(R.id.Text View01);
textview.setText(data_text[position]);
return (row);
}
}
}
Enjoy Coding :)
Tuesday, October 23, 2012
Search in Custom Listview in Android | Android Custom Search | Custom Listview
Mukesh Kumar
Android
,
android search bar
,
custom listview search
,
listview search in android
,
search icon inside edit text
4
comments
Hello Friends ,
Today , I am Sharing my code my code with the help of which we can easily implements the
search functionality on listview or on a custom list view.
android search bar |
Search icon inside edit text |
1. Create a new project in Eclipse File New ⇒ Android ⇒ Application Project and fill the required details.
2. Create required files needed to generate a list view. I am using my default activity_main.xml as list view and created a new xml file for single list item named listview.xml.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:id="@+id/EditText01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawableLeft="@android:drawable/ic_menu_search"
android:hint="Search" >
</EditText>
<ListView
android:id="@+id/ListView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
listview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/background_dark"
android:gravity="left|center"
android:paddingBottom="5px"
android:paddingLeft="5px"
android:paddingTop="5px" >
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10px"
android:textColor="#0099CC"
android:textSize="20px"
android:textStyle="bold" >
</TextView>
</LinearLayout>
MainActivity.java
package com.mukesh.customsearch;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
EditText edittext;
ListView listview;
String[] text = { "One", "HTC One X", "Samsung Galaxy S3", "Samsung
Galaxy Note 800", "HTC Sense", "HTC Sensation XE", "HTC Wildfire S",
"HTC Wildfire", "Wildfire S", "HTC" };
int textlength = 0;
ArrayList<String> text_sort = new ArrayList<String>();
ArrayList<Integer> image_sort = new ArrayList<Integer>();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edittext = (EditText) findViewById(R.id.EditText01);
listview = (ListView) findViewById(R.id.ListView01);
listview.setAdapter(new CustomAdapter(text));
edittext.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textlength = edittext.getText().length();
text_sort.clear();
image_sort.clear();
for (int i = 0; i < text.length; i++) {
if (textlength <= text[i].length()) {
if (edittext
.getText()
.toString()
.equalsIgnoreCase (
( String) text[i] .subSequence(0,textlength))) {
text_sort.add(text[i]);
}
}
}
listview.setAdapter(new CustomAdapter(text_sort));
}
});
}
class CustomAdapter extends BaseAdapter {
String[] data_text;
CustomAdapter() {
}
CustomAdapter(String[] text) {
data_text = text;
}
CustomAdapter(ArrayList<String> text) {
data_text = new String[text.size()];
for (int i = 0; i < text.size(); i++) {
data_text[i] = text.get(i);
}
}
public int getCount() {
return data_text.length;
}
public String getItem(int position) {
return null;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView,
ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row;
row = inflater.inflate(R.layout.listview, parent, false);
TextView textview = (TextView) row.findViewById(R.id.Text View01);
textview.setText(data_text[position]);
return (row);
}
}
}
Enjoy Coding :)
Blog Related to this :
1. Horizontal ListView
Monday 8 October 2012
Monday, October 08, 2012
Multipart image upload in android
Mukesh Kumar
Android
,
Android multipart image upload
,
Android upload image on server
,
Image upload in android
,
Multipart image upload on server in android
3
comments
Hello Friends,
Hope This Will Helps Some
one.
Cheers :)
Enjoy Coding... :)
I'm trying to upload image to my server in Android..???
After spending a lots of time , I came across Multipart image
Upload.Using this
we can easily upload image as well as file on our
server.
Note: The method upload the image using http
multipart form data.
In my condition , My web web service method(upload_image) requires
three parameter .
1. A text message
2. Image or Template Id
3. Icon or Image in byte array format with filename.
Also , I have to pass user token which i am saving into share preference,
when user successfully logged in. Also the API Version which is nothing
but a string(e.g 1.1) which will be saved in my Config Class.
Please , Change the above parameter and post url as per your requirement.
In my condition , My web web service method(upload_image) requires
three parameter .
1. A text message
2. Image or Template Id
3. Icon or Image in byte array format with filename.
Also , I have to pass user token which i am saving into share preference,
when user successfully logged in. Also the API Version which is nothing
but a string(e.g 1.1) which will be saved in my Config Class.
Please , Change the above parameter and post url as per your requirement.
Note: Here , Instead of using android default HTTP
client , I am using the
Apache Http client. Download it from Here
Apache Http client. Download it from Here
And placed it inside your project lib folder.
/**
* Method uploads the image using HTTP Multipart form data.
*
* @param imageData
* @param filename
* @param icon
* @return
* @throws Exception
*/
public static boolean uploadImage(final byte[] imageData, String filename ,
String message) throws Exception{
String responseString = null;
PostMethod method;
String auth_token = Preference.getAuthToken(mContext);
method = new
PostMethod("http://10.0.2.20/"+
"upload_image/" +Config.getApiVersion()
+ "/" +auth_token);
+ "/" +auth_token);
org.apache.commons.httpclient.HttpClient client = new
org.apache.commons.httpclient.HttpClient();
org.apache.commons.httpclient.HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(
100000);
FilePart
photo = new FilePart("icon",
new ByteArrayPartSource( filename, imageData));
new ByteArrayPartSource( filename, imageData));
photo.setContentType("image/png");
photo.setCharSet(null);
String s
= new String(imageData);
Part[] parts
= {
new
StringPart("message_text", message),
new
StringPart("template_id","1"),
photo
};
method.setRequestEntity(new
MultipartRequestEntity(parts, method.getParams()));
MultipartRequestEntity(parts, method.getParams()));
client.executeMethod(method);
responseString =
method.getResponseBodyAsString();
method.releaseConnection();
Log.e("httpPost", "Response status: " +
responseString);
if (responseString.equals("SUCCESS"))
{
return
true;
} else {
return
false;
}
}
Cheers :)
Enjoy Coding... :)
Subscribe to:
Posts
(
Atom
)