Android: Listview select items - android

Using android studio and I have a large product list for a grocery store and want to be able to select items from that list. I then want the selected items to appear in another listview such as a users shopping cart.
#Updated
I have now created a checkable list view. How can I take the checked boxes and add them to another activity/listview that I have created.
enter code here import android.os.Bundle;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ListView;
import android.view.View;
public class MainActivity extends AppCompatActivity{
ArrayList<String> selectedItems=new ArrayList<>();
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView chl=(ListView)findViewById(R.id.checkable_list);
chl.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
String[] items={"Bacon","Sports Drinks","Detergent","Towels","Frozen
Pizza","Water"};
ArrayAdapter<String> adapter=new ArrayAdapter<String>
(this,R.layout.rowlayout,R.id.txt_title,items);
chl.setAdapter(adapter);
chl.setOnItemClickListener(new OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedItem=((TextView)view).getText().toString();
if (selectedItem.contains(selectedItem)) {
selectedItems.remove(selectedItem);
}
else
selectedItems.add(selectedItem);
}
});
}
public void showSelectedItems(View view){
String items="";
for (String item:selectedItems){
items+="-"+item+"\n";
}
Toast.makeText(getApplicationContext(),"Added To Your Cart",Toast.LENGTH_SHORT).show();}}

Please give me MORE information for your Question.
First of all
You have to make a custom listview that call mOneListView and set method OnItemClickListener to mOneListView's ListViewAdapter.
and make another mTwoListView be called by mOneListView's Item.
I think your problem is do not know how to make a custom listview and make a listener for Item of List.
CHECK IT OUT.

Related

In listview not displaying some languages but for the same code in other device it is showing

ChooseLanguage.java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import picker.novasyslabs.com.picker.R;
import picker.novasyslabs.com.picker.SplashScreen;
import picker.novasyslabs.com.picker.Volley.RegisterUser;
public class ChooseLanguage extends AppCompatActivity {
ArrayAdapter adapter;
ListView choose_lang;
String[] languagelist;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
languagelist = getResources().getStringArray(R.array.Langusges);
setContentView(R.layout.activity_choose_language);
adapter = new ArrayAdapter<String>(this,R.layout.language_list,languagelist);
choose_lang = (ListView) findViewById(R.id.languages);
choose_lang.setAdapter(adapter);
choose_lang.setOnItemClickListener(new AdapterView.OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
SplashScreen.Language = parent.getItemAtPosition(position).toString();
Toast.makeText(getApplicationContext(),SplashScreen.Language,Toast.LENGTH_SHORT).show();
RegisterUser registerUser = new RegisterUser();
}
});
}
}
strings.xml
<array name="Langusges">
<item>हिंदी</item>
<item>తెలుగు</item>
<item>தமிழ்</item>
<item>മലയാളം</item>
<item>ಕನ್ನಡ</item>
<item>English</item>
<item>मराठी</item>
<item>বাংলা</item>
<item>ગુજરાતી</item>
<item>ਪੰਜਾਬੀ</item>
<item>ଓଡିଆ</item>
<item>भोजपुरी</item>
<item>नेपाली</item>
<item>हरयनवी</item>
<item>कश्मीरी</item>
<item>অসমীয়া</item>
<item>कोंकणी</item>
</array>
The result as I'm getting:
All languages are displaying but as shown in this image 3 languages are not displaying and even when I click on that item blank will be toasted and when I click on other languages then shows the clicked languages.In my tab it is not showing 3 languages and in other sony phone it is showing other languages only one languages is showing but that is in another format.
any help will be appreciated.
Thanks!
Your tab does not support these languages. But the other devices in which you are testing does.

The textview is empty when I use substring

I am doing an application in android. The application saves a quote or an expression in a textfield. The user has the opportunity to change this text. But I wanted that when the quote is appeared in the TextView, it is not appeared at all. I wanted only the first 5 characters of the quote to be appeared. I try to do this using the substring, but when I open the TextView nothing appears. The TextView is empty. What can I do?
Can anyone help me , please.
Thanks in advance.
This is the line where I use substring:
ListAdapter adapter = new SimpleAdapter( Quote.this,quoteList, R.layout.quote_entry, new String[] { "quoteId", "textQuote".substring(0, 4)}, new int[] {R.id.quoteId, R.id.textQuote});
And here is the entire class
package com.example.prova1;
/**This class is the page of quotes*/
import java.util.ArrayList;
import java.util.HashMap;
import android.app.ListActivity;
import com.example.prova1.Database;
import com.example.prova1.EditQuote;
import com.example.prova1.AddQuote;
import com.example.prova1.R;
import android.os.Bundle;
import android.content.Intent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.SimpleAdapter;
import android.widget.ListView;
public class Quote extends ListActivity {
Intent intent;
TextView quoteId;
Database quotedatabase = new Database(this);
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.quote_main);//define that the interface used is quote_main
//Store data from database in an array list
ArrayList<HashMap<String, String>> quoteList = quotedatabase.getAllItems();
//Check if there are quotes to display
if(quoteList.size()!=0) {
ListView listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
quoteId = (TextView) view.findViewById(R.id.quoteId);
String itemIdValue = quoteId.getText().toString();
Intent theIndent = new Intent(getApplication(),ShowQuote.class);
theIndent.putExtra("quoteId", itemIdValue);
finish();
startActivity(theIndent);
}
});
// Here we use ListAdapter as a bridge between ListView and the data of ListView
ListAdapter adapter = new SimpleAdapter(
Quote.this,quoteList,
R.layout.quote_entry,
new String[] {
"quoteId",
"textQuote".substring(0, 4)
},
new int[] {
R.id.quoteId,
R.id.textQuote}
);
setListAdapter(adapter);
}
}
}
I don't have the SDK installed at the moment to test your code, but I do have a couple suggestions.
First: Try the code without the substring, and see if that works.
Second: If that works, then move the substring operation to the line before and pass in the result to the SimpleAdapter.
I say this because I have the feeling that the substring is not actually your problem. And this is just a good way to test that.
I'd also check your layout "R.layout.quote_entry" and make sure there isn't anything weird going on with that. Such as you having "R.id.textQuote" actually being 'gone' and another TextView being visibly shown, etc. I had this problem once. I had two EditText fields, and only one of them was being shown, so the Activity looked right, but wasn't behaving properly.

Android ListView with CheckBox can distinguish the click

I am trying to create a ListView with CheckBox's...Th ListView should allow the user to both select an item or open that item to select other choice inside it. In other words, the ListView should be able to distinguish between the click on the checkbox and the click on the item itself.
I tried to implement it using android.R.layout.simple_list_item_multiple_choice but this one allows me to only check the checkbox even if I click outside the checkbox (on the item).
anyone can help?
Here's my code,
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class ListViewActivity extends Activity implements OnItemClickListener {
ListView directoryList;
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ArrayList<String> contacts = new ArrayList<String>();
contacts.add("zaid");
contacts.add("hazem");
contacts.add("Oubai");
directoryList= (ListView) findViewById(R.id.directoryList);
final ArrayAdapter<String> arrayAdapter;
arrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice,
contacts);
directoryList.setAdapter(arrayAdapter);
directoryList.setOnItemClickListener(this);
directoryList.setClickable(true);
}
#Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
}
}
You need a customized array adapter. In your getView(), get a hold of your checkbox and set the OnCheckedChangeListener()
Here is a tutorial on how you can make your own custom adapter. The example has a clickable textbox but you can change it to work for a checkbox.
http://www.shubhayu.com/android/listview-with-arrayadapter-and-customized-items

adding delete button to listview in android

i have a list view and i want to mimic the functionality of
UITableViewEditingStyle in iphone .
I want the listview to have a delete button and when the user clicks the deleting button, that particular row should get deleted not only from the database but also from the listview.
I am using ListActivity.
Thank you for your help.
Here is the code that i am using
import android.R.anim;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.SimpleAdapter;
import android.widget.SimpleCursorAdapter;
public class EditSiteList extends ListActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.editsitelist);
HandleDatabase db = new HandleDatabase(null,null,null);
String names[] = db.getSites();
ListAdapter la = new Arraydapter(this,R.layout.editsiterow,R.id.sitename,names);
HandleDatabase hd = new HandleDatabase(null, null, null);
hd.getSitesCursor(), new String[]{"name"}, android.R.id.);
setListAdapter(la);
}
You have to implement your own ListAdapter with this functionality plus you have to decide where to situate the Delete button. At least I did so in my project when I had found that Android has no equivalents of this iPhone feature. In your ListAdapter you should delete the items from the ListView and from the DB manually.

List View selection to start a new Activity

So I'm working with a list view trying to get specific activities to open when a certain item is selected. This is the code that I'm working with right now. I know its wrong but am not sure what I need to change it make it work. I think I need an intent and tried a few ideas but did not come up with much. Thanks.
package table.periodic;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class List extends ListActivity{
String[] elements={"actinium", "aluminum", "americium",
"antimony", "argon", "arsenic", "astatine", "barium",
"berkelium", "beryllium", "bismuth", "bohrium", "boron",
"bromine", "cadmium", "calcium", "californium", "carbon",
"cerium", "cesium", "chlorine", "chromium", "cobalt",
"copper", "copernicium", "curium", "darmstadtium", "dubnium",
"dysprosium", "einsteinium", "erbium", "europium", "fermium",
"fluorine", "francium", "gadolinium", "gallium", "germanium",
"gold", "hafnium", "hassium", "helium", "holmium",
"hydrogen", "indium", "iodine", "iridium", "iron",
"krypton", "lanthanum", "lawrencium", "lead", "lithium",
"lutetium", "magnesium", "manganese", "meitnerium", "mendelevium",
"mercury", "molybdenum", "neodymium", "neon", "neptunium",
"nickel", "niobium", "nitrogen", "nobelium", "osmium",
"oxygen", "palladium", "phosphorus", "platinum", "plutonium",
"polonium", "potassium", "praseodymium", "promethium", "protactinium",
"radium", "radon", "rhenium", "rhodium", "roentgenium", "rubidium",
"ruthenium", "rutherfordium", "samarium", "scandium", "seaborgium",
"selenium", "silicon", "silver", "sodium", "strontium", "sulfur",
"tantalum", "technetium", "tellurium", "terbium", "thallium", "thorium",
"thulium", "tin", "titanium", "tungsten", "ununhexium", "ununoctium",
"ununpentium", "ununquadium", "ununseptium", "ununtrium", "uranium",
"vanadium", "xenon", "ytterbium", "yttrium", "zinc", "zirconium"};
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.list);
setListAdapter(new ArrayAdapter<String>(
this, android.R.layout.simple_list_item_1,
elements));
}
public void onListItemClick(ListView parent, View v, int position,
long id){
if ("actinium".equals(elements[position]))
{startActivity(Actinium.class);}
else if ("aluminum".equals(elements[position]))
{startActivity(Aluminum.class);}
}
I've edited your code a bit. You need to create one ListView element in your layout XML file, and then in your Java file, find it using findViewById:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class List extends Activity {
String[] elements = { … }; // (omitted for better legibility)
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
ListView lv = (ListView)findViewById(R.id.ListView01);
lv.setAdapter(new ArrayAdapter<String>(
this, android.R.layout.simple_list_item_1,
elements));
}
public void onListItemClick(ListView parent, View v, int position,
long id) {
//if ("actinium".equals(elements[position]))
// {startActivity(Actinium.class);}
//else if ("aluminum".equals(elements[position]))
// {startActivity(Aluminum.class);}
}
}

Categories

Resources