Custom Adapter

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

package com.gnirt69.

customlistviewadapterexam;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

/**
* Created by NgocTri on 11/15/2015.
*/
public class MainActivity extends Activity {
private ListView lvProduct;
private ProductListAdapter adapter;
private List<Product> mProductList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

lvProduct = (ListView)findViewById(R.id.listview_product);

mProductList = new ArrayList<>();


//Add sample data for list
//We can get data from DB, webservice here
mProductList.add(new Product(1, "iPhone4", 200, "Apple iPhone4 16GB"));
mProductList.add(new Product(3, "iPhone4S", 250, "Apple iPhone4S 16GB"));
mProductList.add(new Product(4, "iPhone5", 300, "Apple iPhone5 16GB"));
mProductList.add(new Product(5, "iPhone5S", 350, "Apple iPhone5S 16GB"));
mProductList.add(new Product(6, "iPhone6", 400, "Apple iPhone6 16GB"));
mProductList.add(new Product(7, "iPhone6S", 450, "Apple iPhone6S 16GB"));
mProductList.add(new Product(8, "iPhone7", 500, "Apple iPhone7 16GB"));
mProductList.add(new Product(9, "iPhone7S", 600, "Apple iPhon7S 16GB"));
mProductList.add(new Product(10, "iPhone8", 700, "Apple iPhone8 16GB"));
mProductList.add(new Product(11, "iPhone8S", 800, "Apple iPhone8S 16GB"));

//Init adapter
adapter = new ProductListAdapter(getApplicationContext(), mProductList);
lvProduct.setAdapter(adapter);

lvProduct.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Do something
//Ex: display msg with product id get from view.getTag
Toast.makeText(getApplicationContext(), "Clicked product id =" + view.getTag(),
Toast.LENGTH_SHORT).show();
}
});
}
}

package com.gnirt69.customlistviewadapterexam;

/**
* Created by NgocTri on 11/15/2015.
*/
public class Product {
private int id;
private String name;
private int price;
private String description;

//Constructor

public Product(int id, String name, int price, String description) {


this.id = id;
this.name = name;
this.price = price;
this.description = description;
}

//Setter, getter

public int getId() {


return id;
}

public void setId(int id) {


this.id = id;
}

public String getName() {


return name;
}

public void setName(String name) {


this.name = name;
}

public int getPrice() {


return price;
}

public void setPrice(int price) {


this.price = price;
}

public String getDescription() {


return description;
}

public void setDescription(String description) {


this.description = description;
}
}

package com.gnirt69.customlistviewadapterexam;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.List;

/**
* Created by NgocTri on 11/15/2015.
*/
public class ProductListAdapter extends BaseAdapter {

private Context mContext;


private List<Product> mProductList;

//Constructor

public ProductListAdapter(Context mContext, List<Product> mProductList) {


this.mContext = mContext;
this.mProductList = mProductList;
}

@Override
public int getCount() {
return mProductList.size();
}

@Override
public Object getItem(int position) {
return mProductList.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = View.inflate(mContext, R.layout.item_product_list, null);
TextView tvName = (TextView)v.findViewById(R.id.tv_name);
TextView tvPrice = (TextView)v.findViewById(R.id.tv_price);
TextView tvDescription = (TextView)v.findViewById(R.id.tv_description);
//Set text for TextView
tvName.setText(mProductList.get(position).getName());
tvPrice.setText(String.valueOf(mProductList.get(position).getPrice()) + " $");
tvDescription.setText(mProductList.get(position).getDescription());

//Save product id to tag


v.setTag(mProductList.get(position).getId());

return v;
}
}

You might also like