2014-09-02 50 views
3

這裏是我的項目代碼點擊並在列表視圖中打印數據。如何重定向到不同的活動在Android上的項目點擊

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(); 
} 

這裏是我的適配器:

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灣我想申請的項目點擊功能數據,因此如果文本視圖列表顯示後在列表中,則其產品Click它應該打印帖子,如果它請求旅行然後它應該顯示請求旅行,但我無法做到這一點,請幫助做錯的地方。

+0

是在onitemclick吐司?我不明白你的問題。 – 2014-09-02 07:13:50

+0

是的,它顯示但總是相同的messge – Edge 2014-09-02 07:15:01

+0

首先,你應該在你的onclick – 2014-09-02 07:16:57

回答

2

你正在因爲該行

TextView value1 = ((TextView) parentView.findViewById(R.id.title)); 

相同的值,以獲得您的適配器String值或ArrayList中,你可以做這樣的事情。

我假設你有對象

//you arraylist contains object/class 
String value1 = notifies.get(position).getTitle(); 

的ArrayList和使用適配器

String value1 = adapter.getItem(position); 

然後@OverridegetItem()功能在適配器

@Override 
public String getItem(int position){ 

    return notifies.get(position).getTitle(); 

} 

然後移動到其他活動根據你的陳述

@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); 
    } 
} 
+0

問題是http://pastie.org/9520858這裏是我的Activity的整體代碼,但我無法聲明全局DataBaseManager dbManager = new DataBaseManager(context); \t \t ArrayList 通知= dbManager。getNotificationList(); – Edge 2014-09-02 07:34:10

+0

將其聲明爲ArrayList 通知;然後實例化它應該在的位置 – 2014-09-02 07:53:02

-1
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; 
    } 

} 
+0

,首先調用適配器事件,以便您必須添加到適配器或項目中點擊..謝謝 – DaxeshKhatri 2014-09-02 07:20:16

1

我認爲你應該使用onItemClick的int位置。 然後使用if(notifications.get(position).getNotificationType()== 1)

它會更快,並且應該有效地工作。

相關問題