2013-01-08 249 views
0

我在自定义列表视图中有2个文本视图textview1和textview2。列表视图中的总行数为10.如果textview 2中的所有元素都有一个值,即“true”。当第10个元素的textview1被点击时,它应该显示一个消息“Success”,或者即使一个textview2的值不是“true”,那么点击第10个元素textview1应该显示一个消息“Failure”。我的代码 package com.example.list;如何检查列中的所有元素是否具有相同的文本?

import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.app.Activity; 
import android.content.Context; 

public class MainActivity extends Activity 
{ 
ListView lv; 
private static boolean test= false; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    lv = (ListView)findViewById(R.id.lv); 
    lv.setAdapter(new slist(this));   
} 

public class slist extends BaseAdapter 
{ 
    private Context context; 

     public slist(Context c) 
     { 
      context = c; 
     } 

    @Override 
    public int getCount() 
    {   
      return names.length; 
    } 

    @Override 
    public Object getItem(int position) 
    {   
     return null; 
    } 

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

    @Override 
    public View getView(int position, View v, ViewGroup parent) { 

      LayoutInflater li = getLayoutInflater(); 
      v = li.inflate(R.layout.customlist, null); 

      final TextView t1 = (TextView) v.findViewById(R.id.tv1); 
      final TextView t2 = (TextView) v.findViewById(R.id.tv2); 

      t1.setText(names[position]); 
      t2.setText(bikes[position]); 


      t1.setOnClickListener(new OnClickListener() 
      {     
      public void onClick(View v) 
      { 
        if(t1.getText().toString().equalsIgnoreCase(names[names.length-1])) 
       { 

       //Here i should loop through and check all the elements in the bikes[] 
       } 
       else 
       { 
        Toast.makeText(getApplicationContext(), t1.getText().toString(), Toast.LENGTH_SHORT).show(); 
       } 

      } 
      }); 

      return v; 
    } 

} 

String [] names = { "rams", "venu", "pavan", "sravan", "vishnu", "krishna", "hari", "prasad", "raghu" }; 
    String [] bikes = { "true", "true", "false", "true", "true", "false", "true", "false", "true" }; 

}

+0

你总是可以依靠提供给适配器的模型数据,并做一些字符串比较,而不是依赖于视图。 – bHaRaTh

回答

-1

试试这个

index=Integer.parseInt(v.getTag().toString()); 
    View view=yourlistviewname.getChildAt(index); 
    TextView tv1=view.findViewByID(R.id.textview1); 
    TextView tv2=view.findViewByID(R.id.textview2); 

    String first=tv1.getText().toString(); 
    String second=tv2.getText().toString(); 

if(first.equals("yourArrayItemHere")){ 
//your message here 
} 
if(second.equals("false")){ 
//your message here 
} 

,并可以设置消息 '成功' 或 '失败' 按你的TextView的文本;

+0

我必须循环播放所有9个电视2。如果所有电视2都有相同的文字,那么我必须显示成功或失败。 – Anirudh

+0

那么循环你的电视2有什么问题? –

+0

嗨,neurenor,为什么要循环浏览列表的视图。因为你已经有了你将要给列表的适配器的数据列表。你可以依靠那个权利吗? – bHaRaTh

0

你可以用下面的代码段

t1.setOnClickListener(new OnClickListener() 
     {     
     public void onClick(View v) 
     { 
    //check for the position of last item 
    if(position==(names.length-1)) 
    { 
     //check for second element of other 9 items 
     for(int i=0;i<bikes.length-1;i++) 
     { 

      if(bikes[i].equals("true")) 
      { 
       result=true; 
      } 
      else 
      { 
       result=false; 
      } 
     } 
    } 
     } 
     }); 
相关问题