Edge
Edge

Reputation: 933

how to redirect to different Activity in android on item click

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

Answers (3)

Ker p pag
Ker p pag

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

Gleon Apps
Gleon Apps

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

Dakshesh Khatri
Dakshesh Khatri

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

Related Questions