AutoSearchDetails.java
fetching value from mysql to create a listview although am a beginner so please help me
protected void onPostExecute(String result) {
Log.d("jason got", result);
JSONArray jarray;
try {
jarray = new JSONArray(result);
for(int i=0;i<jarray.length();i++){
HashMap<String, String> hm;
hm=new HashMap<String, String>();
JSONObject jobj=jarray.getJSONObject(i);
hm.put("Name",jobj.getString("name"));
hm.put("Phone",jobj.getString("phone"));
Log.d("name", jobj.getString("name"));
oslist.add(hm);
}
} catch (JSONException e) {
Toast.makeText(getBaseContext(), "Not getting result", Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
Log.d("oslist", oslist.toString());
ListAdapter adapter = new SimpleAdapter(AutoSearchDetails.this, oslist,R.layout.listitem,new String[] { Name,Phone }, new int[] {
R.id.name,R.id.phone});
Log.d("adapter", adapter.toString());
listview.setAdapter(adapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
#Override
public void onItemClick(
AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(AutoSearchDetails.this, "You Clicked at "+oslist.get(+arg2).get("name"), Toast.LENGTH_SHORT).show();
}
});
};
in log i do get "oslist" [{"name:fe","phone:32"}]
listitem.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="#+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="#+id/phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
The problem is the value is not setting to the listview
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Map;
public class MyAdapter extends BaseAdapter {
private final ArrayList mData;
public MyAdapter(Map<String, String> map) {
mData = new ArrayList();
mData.addAll(map.entrySet());
}
#Override
public int getCount() {
return mData.size();
}
#Override
public Map.Entry<String, String> getItem(int position) {
return (Map.Entry) mData.get(position);
}
#Override
public long getItemId(int position) {
// TODO implement you own logic with ID
return 0;
}
#Override
public View getView(int position, View convertView, ViewGroup parent) {
final View result;
if (convertView == null) {
result = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_adapter_item, parent, false);
} else {
result = convertView;
}
Map.Entry<String, String> item = getItem(position);
// TODO replace findViewById by ViewHolder
((TextView) result.findViewById(android.R.id.text1)).setText(item.getKey());
((TextView) result.findViewById(android.R.id.text2)).setText(item.getValue());
return result;
}
}
layout for this.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
android:id="#android:id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="#android:id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
And adapter in your code
public void showCinemas(HashMap<String, String> cinemas) {
MyAdapter adapter = new MyAdapter(cinemas);
list.setAdapter(adapter);
}
Related
I'm working on an Android application for placing orders, and I have an activity with an Expandable ListView, which I populate by parsing a JSON file. Now, in each row of the Expandable ListView I have an EditText Field for entering amount, and on a button click I would like to get all the children that have a value different than 0 in that EditText field, and put the data in a database (for the products and the amount that has been ordered).
I would need a help creating a function for getting those elements, since I've struggled with that recently.
Here is my code
Expandable List Adapter:
public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context _context;
private List<String> _listDataHeader; // header titles
// child data in format of header title, child title
private HashMap<String, List<Artikl>> _listDataChild;
public ExpandableListAdapter(Context context, List<String>
listDataHeader,
HashMap<String, List<Artikl>>
listChildData) {
this._context = context;
this._listDataHeader = listDataHeader;
this._listDataChild = listChildData;
}
#Override
public Object getChild(int groupPosition, int childPosititon) {
return
this._listDataChild.get(this._listDataHeader.get(groupPosition))
.get(childPosititon);
}
#Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
public int getChildAmount(int groupPosition, int childPosition,View
convertView) {
int kolicina;
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
EditText amount = (EditText)
convertView.findViewById(R.id.editText);
kolicina=Integer.parseInt(amount.getText().toString());
return kolicina;
}
#Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView,
ViewGroup
parent) {
final Artikl child = (Artikl) getChild(groupPosition,
childPosition);
final String childText = child.getNaziv();
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_item, null);
}
TextView txtListChild = (TextView) convertView
.findViewById(R.id.from_name);
txtListChild.setText(childText);
return convertView;
}
#Override
public int getChildrenCount(int groupPosition) {
return
this._listDataChild.get(this._listDataHeader.get(groupPosition))
.size();
}
#Override
public Object getGroup(int groupPosition) {
return this._listDataHeader.get(groupPosition);
}
#Override
public int getGroupCount() {
return this._listDataHeader.size();
}
#Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
#Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
String headerTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater infalInflater = (LayoutInflater) this._context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = infalInflater.inflate(R.layout.list_group, null);
}
TextView lblListHeader = (TextView) convertView
.findViewById(R.id.lblListHeader);
lblListHeader.setTypeface(null, Typeface.BOLD);
lblListHeader.setText(headerTitle);
return convertView;
}
#Override
public boolean hasStableIds() {
return false;
}
#Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}}
List_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="2.5dp"
android:paddingBottom="2.5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:orientation="horizontal"
android:padding="10dp" >
<TextView
android:id="#+id/from_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="#+id/thumbnail"
android:text="Pineapple"
android:textColor="#040404"
android:textSize="15dip"
android:typeface="sans" />
<LinearLayout
android:id="#+id/cart_plus_minus_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="#+id/from_name"
android:orientation="horizontal"
android:weightSum="1">
<TextView
android:id="#+id/cena_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal|center_vertical"
android:paddingRight="25dip"
android:text="100 gm"
android:textColor="#343434"
android:textSize="12dip" />
<TextView
android:text="Amount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/textView" />
<EditText
android:layout_width="48dp"
android:layout_height="66dp"
android:inputType="textPersonName"
android:ems="10"
android:layout_alignParentBottom="true"
android:layout_toRightOf="#+id/from_name"
android:layout_toEndOf="#+id/from_name"
android:layout_marginLeft="21dp"
android:layout_marginStart="21dp"
android:id="#+id/editText"
android:layout_weight="0.08"
android:hint="0"
android:text="0" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
ListGroup.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:orientation="vertical"
android:padding="8dp"
android:background="#0a2859">
<TextView
android:id="#+id/lblListHeader"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="?
android:attr/expandableListPreferredItemPaddingLeft"
android:textSize="17dp"
android:textColor="#ffffff" />
</LinearLayout>
Order Activity Layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="#f4f4f4" >
<TextView android:layout_width="fill_parent"
android:layout_height="70dp"
android:id="#+id/market_dolg"
android:background="#8090aa"
android:textColor="#android:color/white"
android:textSize="18dp"
android:text="Hello!"
android:gravity="center"/>
<ExpandableListView
android:id="#+id/lvExp"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_below="#id/market_dolg"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_below="#id/lvExp"
android:id="#+id/otkazi"
android:background="#9ea6a8"
android:textColor="#android:color/white"
android:textSize="18dp"
android:text="Cancel Order"
android:onClick="Otkazi_nar"
android:gravity="center"
android:layout_alignParentLeft="true"
android:orientation="horizontal"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_below="#id/lvExp"
android:id="#+id/order"
android:background="#3fa5ba"
android:textColor="#android:color/white"
android:textSize="18dp"
android:text="Order"
android:gravity="center"
android:layout_alignParentRight="true"
android:orientation="horizontal"
/>
</RelativeLayout>
Order Activity Java code:
public class Order extends Activity {
private static final String TAG = Order.class.getSimpleName();
private static final String url = "artikli.json";
ExpandableListAdapter listAdapter;
ExpandableListView expListView;
List<String> listDataHeader;
public List<Artikl> voda = new ArrayList<Artikl>();
public List<Artikl> sok = new ArrayList<Artikl>();
HashMap<String, List<Artikl>> listDataChild;
Button button;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_naracka);
// get the listview
expListView = (ExpandableListView) findViewById(R.id.lvExp);
// preparing list data
prepareListData();
listAdapter = new ExpandableListAdapter(this, listDataHeader,
listDataChild);
// setting list adapter
expListView.setAdapter(listAdapter);
// Listview Group click listener
expListView.setOnGroupClickListener(new OnGroupClickListener() {
#Override
public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
return false;
}
});
}
/*
* Preparing the list data
*/
private void prepareListData() {
listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<Artikl>>();
// Adding child data
listDataHeader.add("Вода");
listDataHeader.add("Сок");
// Adding child data
JsonArrayRequest Req = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
#Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
// Parsing json
for (int i = 0; i < response.length(); i++) {
try {
JSONObject obj = response.getJSONObject(i);
String sifra = obj.getString("sifra");
if (sifra.equals("1")) {
Artikl artikl = new Artikl();
artikl.setNaziv(obj.getString("naziv"));
artikl.setCena(obj.getInt("cena"));
artikl.setSifra(sifra);
artikl.setEdm(obj.getString("edm"));
voda.add(artikl);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}, new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(Req);
JsonArrayRequest Req1 = new JsonArrayRequest(url,
new Response.Listener<JSONArray>() {
#Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
// Parsing json
for (int i = 0; i < response.length(); i++) {
try {
JSONObject obj = response.getJSONObject(i);
String sifra = obj.getString("sifra");
if (sifra.equals("2")) {
Artikl artikl1 = new Artikl();
artikl1.setNaziv(obj.getString("naziv"));
artikl1.setCena(obj.getInt("cena"));
artikl1.setSifra(obj.getString("sifra"));
artikl1.setEdm(obj.getString("edm"));
sok.add(artikl1);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}, new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
}
});
AppController.getInstance().addToRequestQueue(Req1);
listDataChild.put(listDataHeader.get(0), voda);
listDataChild.put(listDataHeader.get(1), sok);
}}
And the Model (Artikl.java) has only Get and Set methods
In getChildView method of adapter add addTextChangedListener to edittext and in afterTextChanged method save enter text in database, if you want to get only numbers then restrict the keyboard number
mEtReference.addTextChangedListener(new TextWatcher() {
#Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
#Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
#Override
public void afterTextChanged(Editable editable) {
if (editable.length() > 0) {
int value = Integer.parseInt(editable + "");
// save value
}
}
});
Can someone help me to do this please? i want to search item from listview using SearchView. Here's my code
This is the ListObat.java
package co.id.zsoft.apotikstore;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
public class ListObat extends Activity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_obat);
ArrayList<ItemDetails> image_details = GetSearchResults();
final ListView lv1 = (ListView) findViewById(R.id.listView);
lv1.setAdapter(new ItemListBaseAdapter(this, image_details));
lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Object o = lv1.getItemAtPosition(position);
ItemDetails obj_itemDetails = (ItemDetails) o;
Toast.makeText(ListObat.this, "You have chosen : " + " " + obj_itemDetails.getName(), Toast.LENGTH_LONG).show();
}
});
}
private ArrayList<ItemDetails> GetSearchResults(){
ArrayList<ItemDetails> results = new ArrayList<ItemDetails>();
ItemDetails item_details = new ItemDetails();
item_details.setName("Pizza");
item_details.setItemDescription("Spicy Chiken Pizza");
item_details.setPrice("RS 310.00");
item_details.setImageNumber(1);
results.add(item_details);
item_details = new ItemDetails();
item_details.setName("Burger");
item_details.setItemDescription("Beef Burger");
item_details.setPrice("RS 350.00");
item_details.setImageNumber(2);
results.add(item_details);
item_details = new ItemDetails();
item_details.setName("Pizza");
item_details.setItemDescription("Chiken Pizza");
item_details.setPrice("RS 250.00");
item_details.setImageNumber(3);
results.add(item_details);
item_details = new ItemDetails();
item_details.setName("Burger");
item_details.setItemDescription("Chicken Burger");
item_details.setPrice("RS 350.00");
item_details.setImageNumber(4);
results.add(item_details);
item_details = new ItemDetails();
item_details.setName("Burger");
item_details.setItemDescription("Fish Burger");
item_details.setPrice("RS 310.00");
item_details.setImageNumber(5);
results.add(item_details);
item_details = new ItemDetails();
item_details.setName("Mango");
item_details.setItemDescription("Mango Juice");
item_details.setPrice("RS 250.00");
item_details.setImageNumber(6);
results.add(item_details);
return results;
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_list_obat, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
This is the ItemDetails.java
package co.id.zsoft.apotikstore;
/**
* Created by rsr_unitedstate on 12/18/2015.
*/
public class ItemDetails {
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getItemDescription() {
return itemDescription;
}
public void setItemDescription(String itemDescription) {
this.itemDescription = itemDescription;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public int getImageNumber() {
return imageNumber;
}
public void setImageNumber(int imageNumber) {
this.imageNumber = imageNumber;
}
private String name ;
private String itemDescription;
private String price;
private int imageNumber;
}
This is the ItemListBaseAdapter.java
package co.id.zsoft.apotikstore;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import org.w3c.dom.Text;
import java.util.ArrayList;
/**
* Created by rsr_unitedstate on 12/18/2015.
*/
public class ItemListBaseAdapter extends BaseAdapter {
private static ArrayList<ItemDetails> itemDetailsrrayList;
private Integer[] imgid = {
R.drawable.testimage,
R.drawable.testimage,
R.drawable.testimage,
R.drawable.testimage,
R.drawable.testimage,
R.drawable.testimage
};
private LayoutInflater l_Inflater;
public ItemListBaseAdapter(Context context, ArrayList<ItemDetails> results) {
itemDetailsrrayList = results;
l_Inflater = LayoutInflater.from(context);
}
public int getCount() {
return itemDetailsrrayList.size();
}
public Object getItem(int position) {
return itemDetailsrrayList.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = l_Inflater.inflate(R.layout.item_details_view, null);
holder = new ViewHolder();
holder.txt_itemName = (TextView) convertView.findViewById(R.id.name);
holder.txt_itemDescription = (TextView) convertView.findViewById(R.id.price);
holder.txt_itemPrice = (TextView) convertView.findViewById(R.id.price);
holder.itemImage = (ImageView) convertView.findViewById(R.id.photo);
holder.txt_qty = (TextView) convertView.findViewById(R.id.Qty);
holder.btnkurang = (ImageButton) convertView.findViewById(R.id.btnkurang);
holder.btntambah = (ImageButton) convertView.findViewById(R.id.btntambah);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txt_itemName.setText(itemDetailsrrayList.get(position).getName());
holder.txt_itemDescription.setText(itemDetailsrrayList.get(position).getItemDescription());
holder.txt_itemPrice.setText(itemDetailsrrayList.get(position).getPrice());
holder.itemImage.setImageResource(imgid[itemDetailsrrayList.get(position).getImageNumber() - 1]);
// imageLoader.DisplayImage("http://192.168.1.28:8082/ANDROID/images/BEVE.jpeg", holder.itemImage);
return convertView;
}
static class ViewHolder {
TextView txt_itemName;
TextView txt_itemDescription;
TextView txt_itemPrice;
TextView txt_qty;
ImageView itemImage;
ImageButton btntambah;
ImageButton btnkurang;
}
}
This is the activity_list_obat.xml as listview layout
<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:paddingLeft="#dimen/activity_horizontal_margin"
android:paddingRight="#dimen/activity_horizontal_margin"
android:paddingTop="#dimen/activity_vertical_margin"
android:paddingBottom="#dimen/activity_vertical_margin"
tools:context="co.id.zsoft.apotikstore.ListObat">
<SearchView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="#+id/editText"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<ImageButton
android:layout_width="70dp"
android:layout_height="70dp"
android:id="#+id/imageButton"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true" />
<ListView
android:layout_width="wrap_content"
android:layout_height="400dp"
android:id="#+id/listView"
android:layout_below="#+id/editText"
android:layout_alignParentEnd="true" />
</RelativeLayout>
And this is the item_details_view.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:id="#+id/photo"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama Obat"
android:id="#+id/name"
android:layout_alignParentTop="true"
android:layout_toEndOf="#+id/photo" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Harga Obat"
android:id="#+id/price"
android:layout_below="#+id/name"
android:layout_toEndOf="#+id/photo" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama Apotik"
android:id="#+id/itemDescription"
android:layout_below="#+id/price"
android:layout_toEndOf="#+id/photo" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:id="#+id/Qty"
android:layout_below="#+id/itemDescription"
android:layout_toEndOf="#+id/photo" />
<ImageButton
android:layout_width="20dp"
android:layout_height="20dp"
android:id="#+id/btnkurang"
android:layout_below="#+id/itemDescription"
android:layout_toEndOf="#+id/Qty"
android:src="#drawable/minus"/>
<ImageButton
android:layout_width="20dp"
android:layout_height="20dp"
android:id="#+id/btntambah"
android:layout_below="#+id/itemDescription"
android:layout_toEndOf="#+id/btnkurang"
android:src="#drawable/plus" />
</RelativeLayout>
Search view comes in the action bar. Therefore menu items need to be set up.
/*******************
* Menu Items
******************/
/*
Menu added to perform search on the action bar. Two menu items:
2. Open the search area on the action bar so that the user can search.
*/
#Override
public void onCreateOptionsMenu(final Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.search, menu);
final MenuItem item = menu.findItem(R.id.action_search);
final SearchView sv = new SearchView(((MainActivity) getActivity()).getSupportActionBar().getThemedContext());
sv.setIconifiedByDefault(true);
sv.setFocusable(true);
sv.setIconified(false);
sv.clearFocus();
sv.requestFocusFromTouch();
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
MenuItemCompat.setActionView(item, sv);
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
#Override
public boolean onMenuItemClick(MenuItem item) {
sv.setIconifiedByDefault(true);
sv.setFocusable(true);
sv.setIconified(false);
sv.requestFocusFromTouch();
return false;
}
});
sv.setOnCloseListener(new SearchView.OnCloseListener() {
#Override
public boolean onClose() {
item.collapseActionView();
hideKeyboard();
return true;
}
});
MenuItemCompat.setOnActionExpandListener(menu.findItem(R.id.action_search), new MenuItemCompat.OnActionExpandListener() {
#Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
#Override
public boolean onMenuItemActionCollapse(MenuItem item) {
//DO SOMETHING WHEN THE SEARCHVIEW IS CLOSING
simpleSearch = null;
sv.setQuery(null, false);
hideKeyboard();
return true;
}
});
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
#Override
public boolean onQueryTextSubmit(String query) {
System.out.println("search query submit");
return false;
}
#Override
public boolean onQueryTextChange(String searchString) {
System.out.println(searchString);
classSearchArray.clear();
if (searchString.length() > 0) {
simpleSearch = searchString.toLowerCase();
for (ClassModel classObj : classArray) {
if (classObj.getName().toLowerCase().contains(simpleSearch) ||
classObj.getCity().toLowerCase().contains(simpleSearch) ||
classObj.getStaffName().toLowerCase().contains(simpleSearch) ||
classObj.getLocationName().toLowerCase().contains(simpleSearch)) {
classSearchArray.add(classObj);
}
}
ClassAdapter adapter = new ClassAdapter(classSearchArray, getActivity(), FindAClassFragment.this);
listViewSearch.setAdapter(adapter);
listView.setVisibility(View.GONE); //original list view
listViewSearch.setVisibility(View.VISIBLE); //search list view
} else {
simpleSearch = null;
listView.setVisibility(View.VISIBLE);
listViewSearch.setVisibility(View.GONE);
}
return false;
}
});
}
Menu XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="#+id/action_search"
android:icon="#drawable/ic_search"
android:title="Search Items"
android:showAsAction="ifRoom|collapseActionView"
android:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
Try this way
<?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" >
<!-- Editext for Search -->
<EditText android:id="#+id/inputSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Search products.."
android:inputType="textVisiblePassword"/>
<!-- List View -->
<ListView
android:id="#+id/list_view"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
listitem.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<!-- Single ListItem -->
<!-- Product Name -->
<TextView android:id="#+id/product_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:textSize="16dip"
android:textStyle="bold"/>
</LinearLayout>
MainActivity.java
public class MainActivity extends Activity {
// List view
private ListView lv;
// Listview Adapter
ArrayAdapter<String> adapter;
// Search EditText
EditText inputSearch;
// ArrayList for Listview
ArrayList<HashMap<String, String>> productList;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Listview Data
String products[] = {"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE",
"iPhone 4S", "Samsung Galaxy Note 800",
"Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};
lv = (ListView) findViewById(R.id.list_view);
inputSearch = (EditText) findViewById(R.id.inputSearch);
// Adding items to listview
adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);
lv.setAdapter(adapter);
/**
* Enabling Search Filter
* */
inputSearch.addTextChangedListener(new TextWatcher() {
#Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// When user changed the Text
MainActivity.this.adapter.getFilter().filter(cs);
}
#Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
#Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
}
}
I am trying to pass the Json data in the view pager, its not showing any errors. But it is also not displaying the images in the view pager, am not able to understand my error
JSON:http://www.souqalkhaleejia.com/webapis/banners.php
Banner.java
public class Banner extends Fragment {
ViewPager bannerpager;
ArrayList<Data> bannerdta = new ArrayList<Data>();
BannerAdapter bannerAdapter;
#Nullable
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View bannerp = inflater.inflate(R.layout.banner, container, false);
bannerpager = (ViewPager) bannerp.findViewById(R.id.bannerpager);
bannerpager.setAdapter(bannerAdapter);
bannerAdapter = new BannerAdapter(bannerdta, getActivity());
loadbanner();
return bannerp;
}
private void loadbanner() {
String bannerurl = "http://www.souqalkhaleejia.com/webapis/banners.php";
JsonObjectRequest bannerreq = new JsonObjectRequest(Request.Method.GET, bannerurl, new Response.Listener<JSONObject>() {
#Override
public void onResponse(JSONObject response) {
try {
JSONArray banners = response.getJSONArray("banners");
for (int i = 0; i < banners.length(); i++) {
JSONObject banner1 = banners.getJSONObject(i);
Data banndata = new Data();
banndata.setBannerimages(banner1.getString("image"));
bannerdta.add(banndata);
}
} catch (JSONException e) {
e.printStackTrace();
}
bannerAdapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getActivity(), "" + error, Toast.LENGTH_SHORT).show();
}
});
AppController.getInstance().addToRequestQueue(bannerreq);
}
}
Adapter.java
public class BannerAdapter extends PagerAdapter {
Context cntx;
private ArrayList<Data> blist;
private LayoutInflater binflater;
public BannerAdapter(ArrayList<Data> blist, Context cntx) {
this.blist = blist;
this.cntx = cntx;
binflater= (LayoutInflater) cntx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
#Override
public int getCount() {
return blist.size();
}
#Override
public boolean isViewFromObject(View view, Object object) {
return object==view;
}
#Override
public Object instantiateItem(ViewGroup container, int position) {
View view=binflater.inflate(R.layout.banner_layout,container,false);
NetworkImageView bannerimage= (NetworkImageView) view.findViewById(R.id.bannerimage);
Data bannerdata=blist.get(position);
ImageLoader imageLoader=AppController.getInstance().getImageLoader();
bannerimage.setImageUrl(bannerdata.getBannerimages(),imageLoader);
view.setTag(bannerdata);
container.addView(view);
Log.i("Banner", "instantiateItem() [position: " + position + "]" + " childCount:" + container.getChildCount());
return view;
}
#Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
Log.i("Banner", "destroyItem() [position: " + position + "]" + " childCount:" + container.getChildCount());
}
#Override
public int getItemPosition(Object object) {
Data data= (Data) ((View) object).getTag();
int position=blist.indexOf(data);
if(position>=0){
return position;
}else {
return POSITION_NONE;
}
}
}
i am including the viewpager from another class to the home page
Home.xml
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<include
android:id="#+id/hmebar"
layout="#layout/toolbar" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="200dp"
>
<include layout="#layout/banner"/>
</FrameLayout>
</LinearLayout>
<ListView
android:id="#+id/nav_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#drawable/hover"
android:choiceMode="singleChoice"
android:divider="#android:color/transparent"
android:dividerHeight="0dp" />
</android.support.v4.widget.DrawerLayout>
banner.xml(i had wrote viewpager xml here and included in the Home layout)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="#+id/bannerpager"
android:layout_width="match_parent"
android:layout_height="200dp"/>
</LinearLayout>
banner_layout.xml(Single viewpager is the image)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.android.volley.toolbox.NetworkImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="#+id/bannerimage"/>
</LinearLayout>
You not update your bannerdta to bannerAdapter, so bannerAdapter.notifyDataSetChanged() will not work.
you can add method updateData(Data banndata) in BannerAdapter.class
pubilc void updateData(Data banndata) {
blist.add(banndata);
notifyDataSetChanged();
}
and after call network request successfull, usebannerAdapter.updateData(banndata)
I am trying to add a checkbox in a customized listview but don't know how.
I have the following codes:
ListObject.java
package br.com.eduvm.xurrascalc;
public class ListObject {
private String texto;
private int iconeRid;
public ListObject() {
}
public ListObject(String texto, int iconeRid) {
this.texto = texto;
this.iconeRid = iconeRid;
}
public int getIconeRid() {
return iconeRid;
}
public void setIconeRid(int iconeRid) {
this.iconeRid = iconeRid;
}
public String getTexto() {
return texto;
}
public void setTexto(String texto) {
this.texto = texto;
}
}
ListAdapter.java
package br.com.eduvm.xurrascalc;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
public class ListAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private ArrayList<ListObject> itens;
public ListAdapter(Context context, ArrayList<ListObject> itens) {
// Itens que preencheram o listview
this.itens = itens;
// responsavel por pegar o Layout do item.
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return itens.size();
}
public ListObject getItem(int position) {
return itens.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View view, ViewGroup parent) {
ListObject item = itens.get(position);
view = mInflater.inflate(R.layout.itens_lista, null);
((TextView) view.findViewById(R.id.text)).setText(item.getTexto());
((ImageView) view.findViewById(R.id.imagemview)).setImageResource(item.getIconeRid());
return view;
}
}
List.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="5sp" >
<ImageView
android:id="#+id/imagemview"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
<TextView
android:id="#+id/text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5sp"
android:gravity="center_vertical"
android:textColor="#FFF" />
</LinearLayout>
</LinearLayout>
How could I do to insert a checkbox in the items in this list?
This would be the layout for each individual row in your list
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<CheckBox
android:id="#+id/lstChkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="#+id/lstText"
android:textSize="30px"
android:layout_weight="1" />
<ImageView
android:id="#+id/listImage"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
You main list activity layout will look something like this:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView
android:id="#android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:drawSelectorOnTop="false"
android:choiceMode="multipleChoice"
/>
Your class which extends BaseAdapter getView method will somethings like this:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vHolder = null;
if (convertView != null)
vHolder = (ViewHolder) convertView.getTag(); // convertView is been recycled
else {
convertView = (View) mInflater.inflate(R.layout.list_item, null); // Set content of new View with list_item.xml
vHolder = new ViewHolder();
vHolder.checkBox = ((CheckBox) convertView.findViewById(R.id.lstChkbox)); // Getting pointers
vHolder.textView = ((TextView) convertView.findViewById(R.id.lstText));
vHolder.imageView = ((ImageView) convertView.findViewById(R.id.listImage));
vHolder.checkBox.setOnCheckedChangeListener(this); // Setting Listeners
convertView.setTag(vHolder);
}
vHolder.checkBox.setId(position); // This is part of the Adapter APi
vHolder.textView.setId(position); // Do not delete !!!
vHolder.imageView.setId(position);
if (mItems.get(position).getChecked()) { // Setting parameters for the View from our mItems list
vHolder.checkBox.setChecked(true);
} else {
vHolder.checkBox.setChecked(false);
}
vHolder.textView.setText(mItems.get(position).getText());
vHolder.imageView.setImageDrawable(mItems.get(position).getmImage());
return convertView;
}
public static class ViewHolder {
CheckBox checkBox;
TextView textView;
ImageView imageView;
}
/*
* Ok for this test but Toast are going to show every time the row comes into View
*/
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.d(TAG, "Checked");
int position = buttonView.getId();
if (isChecked) {
mItems.get(position).setChecked(true);
Toast.makeText(context, mItems.get(position).getText(), Toast.LENGTH_LONG).show();
} else {
mItems.get(buttonView.getId()).setChecked(false);
}
}
Just add a checkbox to the layout itens_lista.xml.
Just adding a checkbox is easy. Do you want to do anything more to ti.
Add a CheckBox View to your custom row layout.
I am new to android. i was created custome_row_view.xml file for row view.
using list i display two row. now i added one button in custome_row_view.
how to write code for that button onclick
Main. XML
<ListView
android:id="#id/android:list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
custom_row_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="#+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Button
android:id="#+id/buton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<TextView
android:id="#+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
CustomeViewActivity.java
package naresh.custom.view;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;
public class CustomeViewActivity extends ListActivity implements OnItemClickListener{
static final ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list.removeAll(list);
ListView lista=(ListView)findViewById(android.R.id.list);
int count = lista.getChildCount();
SimpleAdapter adapter = new SimpleAdapter(
this,
list,
R.layout.custom_row_view,
new String[] {"title","description"},
new int[] {R.id.textView1,R.id.textView2}
);
if(count<5){
HashMap<String,String> temp = new HashMap<String,String>();
temp.put("title","On/Off");
temp.put("description", "Alert to be On or Off");
list.add(temp);
HashMap<String,String> temp1 = new HashMap<String,String>();
temp1.put("title","Select tone");
temp1.put("description", "Select tone for alerting");
list.add(temp1);
HashMap<String,String> temp2 = new HashMap<String,String>();
temp2.put("title","Alert Time");
temp2.put("description", "Select Time for alerting Before/After");
list.add(temp2);
HashMap<String,String> temp3 = new HashMap<String,String>();
temp3.put("title","Change Password");
temp3.put("description", "Can cahnge password any time");
list.add(temp3);
setListAdapter(null);
setListAdapter(adapter);
}
getListView().setOnItemClickListener(this);
}
#Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(this,"ITem clicked", Toast.LENGTH_LONG).show();
}
}
I think you are using CustomAdapter to populate the listview..
If So then in getView() include the the button action:
public View getView(final int position, View convertView, ViewGroup parent)
{
View row=convertView;
FetchHolder holder=null;
if (row==null)
{
LayoutInflater inflater=getLayoutInflater();
row=inflater.inflate(R.layout.grid, parent, false);
holder=new FetchHolder(row);
row.setTag(holder);
}
else
{
holder=(FetchHolder)row.getTag();
}
holder.button.setOnClickListener(new OnClickListener()
{
public void onClick(View v) {
}
});
return row;
}
}
static class FetchHolder
{
private Button time=null;
FetchHolder(View row)
{
time=(Button)row.findViewById(R.id.timebutton);
}