【问题标题】:How to check whether all the elements in a column have same text?如何检查列中的所有元素是否具有相同的文本?
【发布时间】:2013-01-08 15:29:14
【问题描述】:

我在自定义列表视图中有 2 个文本视图 textview1 和 textview2。 listview 中的总行数为 10。如果 textview 2 中的所有元素都有一个值,即“true”。当点击第 10 个元素的 textview1 时,它应该显示一条消息“Success”,或者即使一个 textview2 的值不是“true”,那么点击第 10 个元素的 textview1 应该显示一条消息“Failure”。

这是我的代码 包 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" };

}

【问题讨论】:

  • 您总是可以依赖给适配器的模型数据并进行一些字符串比较,而不是依赖视图。

标签: android listview


【解决方案1】:

您可以使用以下代码

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

【讨论】:

    【解决方案2】:

    试试这个

     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 的文本设置消息“成功”或“失败”;

    【讨论】:

    • 我必须遍历所有 9 台 tv2。如果所有的 tv2 都有相同的文本,那么我必须显示成功或失败。
    • 那么循环播放 tv2 有什么问题?
    • 嗨 neurenor,为什么要遍历列表的视图。因为您已经有了将要提供给列表适配器的数据列表。你可以依靠它吗?。
    • 我如何设计一个for循环来检查字符串?
    • 他想检查所有 10 台电视而不是特定的。所以我建议他这样做。我知道如果他只想获得一台电视,那么他可以在点击事件时在该电视上设置标签并使用我们设置的标签获取特定的电视。
    猜你喜欢
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    相关资源
    最近更新 更多