2013-01-08 170 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; 
      } 
     } 
    } 
     } 
     }); 
相關問題