Hi guys, i created list view with checkbox...now i would know how insert this listview in a tab.
this is my code for list view:
MAIN.XML:
SINGLE_LISTVIEW_ITEM.XML
HELP ME PLEASE
this is my code for list view:
Code:
public class Main extends ActionBarActivity implements
android.widget.CompoundButton.OnCheckedChangeListener{
ListView lv;
ArrayList<Planet> planetList;
PlanetAdapter plAdapter;
@Override
protectedvoid onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv =(ListView) findViewById(R.id.listview);
displayPlanetList();
}
privatevoid displayPlanetList(){
planetList =newArrayList<Planet>();
planetList.add(newPlanet("Margherita",6,"€"));
planetList.add(newPlanet("Diavola",7,"€"));
planetList.add(newPlanet("Bufalina",5,"€"));
planetList.add(newPlanet("Marinara",5,"€"));
planetList.add(newPlanet("Viennese",4,"€"));
plAdapter =newPlanetAdapter(planetList,this);
lv.setAdapter(plAdapter);
}
@Override
publicvoid onCheckedChanged(CompoundButton buttonView,boolean isChecked){
int pos = lv.getPositionForView(buttonView);
if(pos !=ListView.INVALID_POSITION){
Planet p = planetList.get(pos);
p.setSelected(isChecked);
/*Toast.makeText(
this,
"Clicked on Planet: " + p.getName() + ". State: is "
+ isChecked, Toast.LENGTH_SHORT).show();*/
}
}
publicvoid showResult(View v){
String result ="Selected Product are :";
int totalAmount=0;
for(Planet p : plAdapter.getBox()){
if(p.selected){
result +="\n"+ p.name+" "+p.distance+"€"+"q.tà :"+p.getQuantità();
//if (p.quantità.equals("") && p.quantità.equals(null) ){
System.out.println("leggo questo record:"+p.name +" "+ p.distance +" "+ p.quantità);
System.out.println("leggo questo p.getquatità :"+p.quantità);
//}
//else{
System.out.println("leggo questo in p.quantità: "+p.getQuantità());
int quantitaInt=Integer.parseInt(p.getQuantità());
totalAmount+=p.distance * quantitaInt;
//}
}
}
// Toast.makeText(this, result+"\n"+"Total Amount:="+totalAmount, Toast.LENGTH_LONG).show();
//Integer.toString(totalAmount);
Intent i =newIntent(Main.this,SecondActivity.class);
i.putExtra("NomeDati1", result);
i.putExtra("NomeDati2",String.valueOf(totalAmount));
startActivity(i);
}
}
classPlanet{
String name;
int distance;
String quantità;
String valuta;
boolean selected =false;
publicPlanet(String name,int distance,String quantità){
super();
this.name = name;
this.distance = distance;
this.quantità= quantità;
}
publicString getName(){
return name;
}
publicvoid setName(String name){
this.name = name;
}
publicint getDistance(){
return distance;
}
publicvoid setDistance(int distance){
this.distance = distance;
}
publicboolean isSelected(){
return selected;
}
publicvoid setSelected(boolean selected){
this.selected = selected;
}
publicString getQuantità(){
return quantità;
}
publicvoid setQuantità(String quantità){
this.quantità= quantità;
}
publicString getValuta(){
return valuta;
}
publicvoid setValuta(String valuta){
this.valuta = valuta;
}
}
publicclassPlanetAdapterextendsArrayAdapter<Planet>{
privateList<Planet> planetList;
privateContext context;
ArrayList<Planet> objects;
publicPlanetAdapter(List<Planet> planetList,Context context){
super(context, R.layout.single_listview_item, planetList);
this.planetList = planetList;
this.context = context;
}
publicclassPlanetHolder{
publicTextView planetName;
publicTextView distView;
publicCheckBox chkBox;
publicEditText edit;
publicString quantità;
}
@Override
publicView getView(int position,View convertView,ViewGroup parent){
View row = convertView;
PlanetHolder holder =null;
if(row ==null){
LayoutInflater inflater =((Activity) context).getLayoutInflater();
row = inflater.inflate(R.layout.single_listview_item, parent,false);
holder =newPlanetHolder();
holder.planetName =(TextView) row.findViewById(R.id.name);
holder.distView =(TextView) row.findViewById(R.id.dist);
holder.chkBox =(CheckBox) row.findViewById(R.id.chk_box);
holder.edit =(EditText) row.findViewById(R.id.editText);
holder.edit.setVisibility(View.GONE);
holder.edit.setEnabled(false);
row.setTag(holder);
}else{
holder =(PlanetHolder) row.getTag();
}
finalPlanet p = planetList.get(position);
holder.chkBox.setOnCheckedChangeListener((Main) context);
finalPlanetHolder finalHolder = holder;
holder.chkBox.setOnClickListener(newView.OnClickListener(){
@Override
publicvoid onClick(View v){
if(finalHolder.chkBox.isChecked()){
finalHolder.edit.setVisibility(View.VISIBLE);
finalHolder.edit.setEnabled(true);
finalHolder.edit.addTextChangedListener(newTextWatcher(){
@Override
publicvoid beforeTextChanged(CharSequence s,int start,int count,int after){
}
@Override
publicvoid onTextChanged(CharSequence s,int start,int before,int count){
}
@Override
publicvoid afterTextChanged(Editable s){
p.setQuantità(finalHolder.edit.getText().toString().trim());
}
});
}else{
finalHolder.edit.setVisibility(View.GONE);
finalHolder.edit.setEnabled(false);
finalHolder.edit.setText(null);
}
}
});
holder.planetName.setText(p.getName());
holder.distView.setText(""+ p.getDistance());
holder.chkBox.setChecked(p.isSelected());
holder.chkBox.setTag(p);
holder.edit.setEnabled(false);
return row;
}
ArrayList<Planet> getBox(){
ArrayList<Planet> box =newArrayList<Planet>();
for(Planet p : planetList){
if(p.selected)
box.add(p);
}
return box;
}
}
MAIN.XML:
Code:
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="400dp">
</ListView>
<Button
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:onClick="showResult"
android:text="get_answer">
</Button>
SINGLE_LISTVIEW_ITEM.XML
Code:
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<CheckBox
android:id="@+id/chk_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"/>
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:orientation="vertical"
android:layout_weight="1">
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/chk_box"
android:textStyle="bold"/>
<TextView
android:id="@+id/dist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:layout_toRightOf="@id/chk_box"
android:textSize="12sp"
android:textStyle="italic"/>
<EditText
android:layout_width="196dp"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="10"
android:id="@+id/editText"
android:hint="quantità"
>
</EditText>
</LinearLayout>
</LinearLayout>
HELP ME PLEASE