2016-06-15 21 views
-1

私は動的に取り込まなければならないので、リストビューを使用しています。そのようなよくある質問、項目は質問を表示し、特定の項目を展開してテキストビューを表示する項目をクリックするとListViewアイテム内にTextViewが1つしかないので、ExpandableListViewを使用することはできません。アイテム内の単一のTextViewでListViewを拡張する方法

Item 1   v 
---------------------- 
    Item 2   ^
    This is also a dynamic text but can be put in a single textview. 
---------------------- 
    Item 3   v 
---------------------- 

助けてください:

Item 1   v 
---------------------- 
    Item 2   v 
---------------------- 
    Item 3   v 

したがって、ユーザーは、アイテム2がクリックしたとき!

これは私がこれまでに得たものです!

public View getView(int position, View convertView, ViewGroup parent) { 
     if(convertView == null){ 
      convertView = inflater.inflate(R.layout.layout_faq_item, parent, false); 
     } 
     FAQObject faq = faqList.get(position); 
     convertView.setTag(faq); 
     convertView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       FAQObject faq = (FAQObject) view.getTag(); 
       if(faq.isExpanded()) { 
        view.findViewById(R.id.text_faq_answer_title).setVisibility(View.GONE); 
        view.findViewById(R.id.text_faq_answer_content).setVisibility(View.GONE); 
        ((TextView)view.findViewById(R.id.text_faq_question)).setCompoundDrawablesWithIntrinsicBounds(0,0, 
          android.R.drawable.arrow_down_float, 0); 
        faq.setExpanded(false); 
       }else{ 
        ((TextView)view.findViewById(R.id.text_faq_question)).setText(faq.getQuestion()); 
        ((TextView)view.findViewById(R.id.text_faq_answer_content)).setText(faq.getAnswer()); 
        view.findViewById(R.id.text_faq_answer_title).setVisibility(View.VISIBLE); 
        view.findViewById(R.id.text_faq_answer_content).setVisibility(View.VISIBLE); 
        ((TextView)view.findViewById(R.id.text_faq_question)).setCompoundDrawablesWithIntrinsicBounds(0,0, 
          android.R.drawable.arrow_up_float, 0); 
        faq.setExpanded(true); 
       } 

      } 
     }); 
     return convertView; 
    } 

リストはテキストの全長に拡大されていません..!

+0

あなたがこれまで持っているコードを表示し、あなたがしようとしているかを示す必要があります。 – Bryan

答えて

1

2つのTextViewでレイアウトを作成します。可視性を2番目のTextViewにGONEとして設定します。 AdapterView.OnItemClickListenerインターフェイスを実装し、次のコードを試してください。

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
    View secondTextView = view.findViewById(R.id.second_text_view); 
    int visibility = secondTextView.getVisibility() == View.VISIBLE ? View.GONE : 
View.VISIBLE; 
    secondTextView.setVisibility(visibility); 
} 

P.S.私はそれを試していない、ちょうどアイデアを与える。

+0

私はほとんど同じでした!アイテムは内部のテキストのサイズまで伸びず、そのアイテム内でスクロールしています!私はちょうど質問に追加されたコードを見てください! –

0

カスタムアダプタを使用していると仮定すると、条件チェックに応じて、拡張ビューの可視性をgoneからvisibleに設定できます。これは、加算器内でgetViewまたはbindViewのいずれかの方法で行うことができます。例として、次のコードは前のエントリを調べ、店舗が異なる場合は店舗の見出しを表示します(そうでない場合)。通路が異なる場合も同様です。これはlistView'sbindView方式でエンコードされている: -

 if(prevshop != cursor.getLong(shoppinglist_shopid_offset)) { 
      shophdrll.setVisibility(View.VISIBLE); 
      shophdrll.setBackgroundColor(ContextCompat.getColor(context, R.color.colorlistviewheading)); 
     } else { 
      shophdrll.setVisibility(View.GONE); 
     } 
     if(prevaisle != cursor.getLong(shoppinglist_aisleid_offset)) { 
      aislehdrll.setVisibility(View.VISIBLE); 
      aislehdrll.setBackgroundColor(ContextCompat.getColor(context, R.color.colorlistviewsubheading)); 
     } else { 
      aislehdrll.setVisibility(View.GONE); 
     } 
関連する問題