0

基本上我是新來的Android和不知道的不多。我做在我使用自定義的ListView有5個自定義TextViews,一個問題和其他4選項問答節目。我的問題是我想要的TextView的點擊以及與LisView作爲首選模式單一。那就是如果我點擊一個文本,所有其他TextView s應該變得不可點擊。我的問題是,每當我在子佈局的點擊一個TextView,只有外部佈局,即ListView都被選擇的項目。 這裏是我的列表視圖的截圖如何使一個自定義列表視圖的孩子的一個TextView click事件中的Android

https://picasaweb.google.com/108429569548433380582/Android?authkey=Gv1sRgCJ3kxJz7tLvaTg#5783846428648608706

+0

你有沒有在您的自定義視圖擴展'ListView'? – iTurki

+0

對不起,如何做到這一點,讓我檢查一下,我會回來的結果...順便說一句,感謝哥們看我的清單上看到它這樣的 https://picasaweb.google.com/108429569548433380582/Android? authkey = Gv1sRgCJ3kxJz7tLvaTg#5783846428648608706 – Akkss

+0

你問我是否擴展了適配器?對不起,我沒有得到你請告訴我你問什麼 – Akkss

回答

0

試試這個:

當你選擇一個TextView的其他三將無法點擊

final TextView texta = (TextView) findViewById(R.id.text_a); 
    final TextView textb = (TextView) findViewById(R.id.text_b); 
    final TextView textc = (TextView) findViewById(R.id.text_c); 
    final TextView textd = (TextView) findViewById(R.id.text_d); 
    texta.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View v) { 

      textb.setClickable(false); 
      textc.setClickable(false); 
      textd.setClickable(false); 
     } 

    }); 
    textb.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View v) { 

      texta.setClickable(false); 
      textc.setClickable(false); 
      textd.setClickable(false); 
     } 

    }); 
    textc.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View v) { 

      texta.setClickable(false); 
      textb.setClickable(false); 
      textd.setClickable(false); 
     } 

    }); 
    textd.setOnClickListener(new OnClickListener() 
    { 
     public void onClick(View v) { 

      texta.setClickable(false); 
      textb.setClickable(false); 
      textc.setClickable(false); 
     } 

    }); 
+0

首先感謝adam的幫助,但仍然我的問題仍然存在,只要我點擊textviews它沒有響應我認爲列表視圖的行項目仍然點擊每當我想單擊文字瀏覽may b截圖將幫助你更多回答我的問題https ://picasaweb.google.com/108429569548433380582/Android?authkey = Gv1sRgCJ3kxJz7tLvaTg#5783846428648608706我想要做的,因爲每當我點擊一個文本視圖,它將被選中,它將檢查選定的文本中的文本與預加載的答案。但行項目始終處於選中狀態。 – Akkss

+0

感謝亞當它爲我工作 – Akkss

1

你可以做到這一點有兩種方式:

通過直接使用onClickListener這樣的:

textView.setOnClickListener(new View.OnClickListener(
     public void onClick(View arg0) { 

      // Do anything here. 

     } 
    }); 

OR

2.XML文件,在<TextView />聲明中增加一個屬性爲:

android:onClick="onClickTextView" 

和YOUT活動,添加此功能:

public void onClickTextView(View view) { 

     // Do anything here. 
} 

UPDATE:

使用下面的代碼獲得點擊的TextView事件:

// Click event for single list row 
     getListView().setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       TextView tv = (TextView) (findViewById(R.id.title)); 
       if (tv != null) { 
        tv.setOnClickListener(new View.OnClickListener() { 

         @Override 
         public void onClick(View v) { 
          Toast.makeText(MainActivity.this, "CLICKED", 
            Toast.LENGTH_LONG).show(); 
         } 
        }); 
       } else { 
        Toast.makeText(MainActivity.this, "TV not found", 
          Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
+0

當然,我會嘗試這個好,並會盡早報告你...順便說一句,thnks夥伴 – Akkss

+0

不客氣:) – Shrikant

+0

我試過你建議,但我認爲問題是,當我點擊文本視圖,列表視圖的行項目被選中,而不是其子視圖中的文本視圖向您發送我的應用程序的屏幕截圖的鏈接看看這個朋友,並建議我一些更多的幫助[鏈接](https://picasaweb.google.com/108429569548433380582/Android?authkey=Gv1sRgCJ3kxJz7tLvaTg#5783846428648608706) – Akkss

0

假設您擴展BaseAdapter以設置列表視圖內容 - >

打開TextView偵聽器和當前支架位置的settag,然後在onclick方法中執行您的操作。

+0

老兄你可以建議任何例子或這裏的一些網站,因爲我新的android。 – Akkss

0

這是ListView的默認行爲。只有一個可以點擊:列表行或行內的項目。

例如:如果行項目是一個TextView(如你的情況)列表行可點擊,但如果行項目是一個按鈕,然後在列表行不可點擊。如果您將TextView設置爲可點擊,情況也是如此。

對於您的要求,更好的方法是使用RadioGroup(而不是多個文本視圖並禁用並啓用它們)。 您應該使用自定義佈局來爲列表項提供TextView for question和RadioGroup for options。

佈局可能是這樣的:
enter image description here

以下鏈接以供參考: 爲listView
RadioGroup

我希望這將有助於

+0

看過圖片的鏈接後,我可以說你不需要一個TextView,你只需要一個圓角的按鈕作爲選項。而onClick你可以刪除按鈕的文本(錯誤的選項)。糾正我,如果我錯了 – karn

+0

其實karn該選項textview有一些動畫,我想我應該使用簡單的按鈕,這樣我可以改變那裏背景作爲一個自定義的,,,非常感謝回覆我的朋友。我會在你的選擇,如果一切都枉然,我做了什麼,我會選擇你的意見..保持張貼,如果你有任何想法 – Akkss

0

感謝Shrikant和亞當的有幫助對不起,我爲遲到的反應appologize。

或者通過Shrikant適配器類使用此爲:

textViewa.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Do anything here. 
     } 
    }); 

    textViewb.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View arg0) { 
      // Do anything here. 
     } 
    }); 

    //and so on... 

    // or better to use ViewHolder holder; for these type of listviews; 

    View.OnClickListener clickListener = new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      // Do what you want to do. 

      // for my i have to call a method in my parent activity. so in constructor of adapter, I passed the activity and then typecasted it like 

      ParentActivity parent = (ParentActivity) activity; 
      parent.chosenAnswer(view.getId()); 

      // then in chosenAnswer(int id) in parentActivity use a switch case for the same logic as in Adam's answer. 

      // OR 
      //you can write like this too.. 

      switch (view.getId()) { 
       case R.id.textViewa: 
        break; 
       case R.id.textViewb: 
        break; 
       case R.id.textViewc: 
        break; 
       case R.id.textViewd: 
        break; 
      } 
     } 
    }; 
相關問題