Reputation: 933
Here is My code for item Click and print data in list view .
listView = (ListView) layout.findViewById(R.id.listView1);
Notifcationadapter adapter = new Notifcationadapter(this, notifies);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
View parentView = (View) view.getParent();
TextView value1 = ((TextView) parentView.findViewById(R.id.title));
String value = value1.getText().toString();
if (value.equals("Post"))
Toast.makeText(this, "Post", 1000).show();
if (value.equals("Request For travelling"))
Toast.makeText(this, "Request for travelling", 1000).show();
}
Here is my adapter :
public class Notifcationadapter extends BaseAdapter {
private static ArrayList<Notify> values;
Context context;
// List<RowItem> rowItems;
ViewHolder holder = null;
LinearLayout linear2;
DataBaseManager dbManager = new DataBaseManager(context);
ArrayList<Notify> notifies;
public Notifcationadapter(Context context, ArrayList<Notify> notifies) {
super();
this.context = context;
this.notifies = notifies;
}
/* private view holder class */
private class ViewHolder {
TextView txtTitle;
TextView txtDesc;
ImageView yesimage;
ImageView noimage;
TextView revresetime;
LinearLayout linear2;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.notifcationlistitem, null);
holder = new ViewHolder();
holder.linear2 = (LinearLayout) convertView.findViewById(R.id.linear2);
holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
holder.yesimage = (ImageView) convertView.findViewById(R.id.imageView1);
holder.noimage = (ImageView) convertView.findViewById(R.id.imageView2);
holder.revresetime = (TextView) convertView.findViewById(R.id.revresetime);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// holder.txtTitle.setText("Title");
String statustype = notifies.get(position).getNotificationType();
if (statustype.equals("1")) {
holder.txtDesc.setText(notifies.get(position).getNotificationDescrpiton());
holder.revresetime.setText(Functions.setLastSeenNotifcationTime(notifies.get(position).getNotificationDatetime()));
holder.txtTitle.setText("Request For travelling");
holder.yesimage.setVisibility(View.VISIBLE);
holder.noimage.setVisibility(View.VISIBLE);
} else {
holder.txtDesc.setText(notifies.get(position).getNotificationDescrpiton());
holder.txtTitle.setText("Post");
holder.revresetime.setText(Functions.setLastSeenNotifcationTime(notifies.get(position).getNotificationDatetime()));
holder.yesimage.setVisibility(View.GONE);
holder.noimage.setVisibility(View.GONE);
}
if (position % 2 == 0) {
convertView.setBackgroundColor(Color.parseColor("#ffffff"));
} else {
convertView.setBackgroundColor(Color.parseColor("#f5f6f1"));
}
holder.yesimage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(context, "Yes", 10000).show();
holder.linear2.setVisibility(View.INVISIBLE);
}
});
holder.noimage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "NO", 10000).show();
holder.linear2.setVisibility(View.INVISIBLE);
}
});
return convertView;
}
@Override
public int getCount() {
return notifies.size();
}
@Override
public Object getItem(int position) {
return notifies.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
I am displaying data in List view i wan i want to apply on item click function so that if text view list display post in list then its item click it should Print post if it Request for traveling then it should show Request for travel but i am unable to do this please help where am doing wrong .
Upvotes: 3
Views: 1689
Reputation: 1588
you are getting the same value because of this line
TextView value1 = ((TextView) parentView.findViewById(R.id.title));
to get the String
value in your adapter or arraylist you can do something like this.
i assume you have arraylist of objects
//you arraylist contains object/class
String value1 = notifies.get(position).getTitle();
and using the adapter
String value1 = adapter.getItem(position);
then @Override
the getItem()
function in your adapter
@Override
public String getItem(int position){
return notifies.get(position).getTitle();
}
then to move to other activity according to your if statement
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
View parentView = (View) view.getParent();
String value = notifies.get(position).getTitle();
Intent i = null;
if (value.equals("Post")){
i = new Intent(context,PostActivity.class);
}
else if (value.equals("Request For travelling")){
i = new Intent(context,RequestActivity.class);
}
if(i !=null){
startActivity(i);
}
}
Upvotes: 2
Reputation: 61
I think you should use int position of onItemClick. and then use if(notifies.get(position).getNotificationType() == 1)
it will be faster and should effectively work also.
Upvotes: 1
Reputation: 629
First remove the onitemclick listener from activity. and use this code -
listView.setOnItemClickListener(this); // remove this line
as well as remove onitem click-
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
View parentView = (View) view.getParent();
TextView value1 = ((TextView) parentView.findViewById(R.id.title));
String value = value1.getText().toString();
if (value.equals("Post")) {
Toast.makeText(this, "Post", 1000).show();
}
if (value.equals("Request For travelling")) {
Toast.makeText(this, "Request for travelling", 1000).show();
}
}
**just add convertview click listener**
public class Notifcationadapter extends BaseAdapter {
private static ArrayList<Notify> values;
Context context;
// List<RowItem> rowItems;
ViewHolder holder = null;
LinearLayout linear2;
DataBaseManager dbManager = new DataBaseManager(context);
ArrayList<Notify> notifies;
public Notifcationadapter(Context context, ArrayList<Notify> notifies) {
super();
this.context = context;
this.notifies = notifies;
}
/* private view holder class */
private class ViewHolder {
TextView txtTitle;
TextView txtDesc;
ImageView yesimage;
ImageView noimage;
TextView revresetime;
LinearLayout linear2;
}
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater mInflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.notifcationlistitem, null);
holder = new ViewHolder();
holder.linear2 = (LinearLayout) convertView
.findViewById(R.id.linear2);
holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
holder.txtTitle = (TextView) convertView.findViewById(R.id.title);
holder.yesimage = (ImageView) convertView
.findViewById(R.id.imageView1);
holder.noimage = (ImageView) convertView
.findViewById(R.id.imageView2);
holder.revresetime = (TextView) convertView
.findViewById(R.id.revresetime);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// holder.txtTitle.setText("Title");
String statustype = notifies.get(position).getNotificationType();
if (statustype.equals("1")) {
holder.txtDesc.setText(notifies.get(position)
.getNotificationDescrpiton());
holder.revresetime.setText(Functions
.setLastSeenNotifcationTime(notifies.get(position)
.getNotificationDatetime()));
holder.txtTitle.setText("Request For travelling");
holder.yesimage.setVisibility(View.VISIBLE);
holder.noimage.setVisibility(View.VISIBLE);
}
else {
holder.txtDesc.setText(notifies.get(position)
.getNotificationDescrpiton());
holder.txtTitle.setText("Post");
holder.revresetime.setText(Functions
.setLastSeenNotifcationTime(notifies.get(position)
.getNotificationDatetime()));
holder.yesimage.setVisibility(View.GONE);
holder.noimage.setVisibility(View.GONE);
}
if (position % 2 == 0) {
convertView.setBackgroundColor(Color.parseColor("#ffffff"));
}
else {
convertView.setBackgroundColor(Color.parseColor("#f5f6f1"));
}
holder.yesimage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(context, "Yes", 10000).show();
holder.linear2.setVisibility(View.INVISIBLE);
}
});
holder.noimage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(context, "NO", 10000).show();
holder.linear2.setVisibility(View.INVISIBLE);
}
});
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// write your code to redirect to another activity like this way
Intent i = new Intent(context,
Youractivity.class);
context.startActivity(i);
}
});
return convertView;
}
@Override
public int getCount() {
return notifies.size();
}
@Override
public Object getItem(int position) {
return notifies.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
Upvotes: -1