2016-06-22 4 views
1

コードは次のとおりです。ダイナミック

View v = convertView; 

LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
v = inflater.inflate(R.layout.newsfeed_custom_listview_facebook, parent, false); 

TextView username = (TextView) v.findViewById(R.id.username); 
TextView prayerTitle = (TextView) v.findViewById(R.id.prayerTitle); 
TextView createdOn = (TextView) v.findViewById(R.id.createdOn); 
TextView prayerMessage = (TextView) v.findViewById(R.id.prayerMessage); 
ScrollView scrollView = (ScrollView) v.findViewById(R.id.scrollView); 
MixedObj menuItemsBean = menuItems.get(position); 
RoundedImageView img = (RoundedImageView) v.findViewById(R.id.image); 

username.setText(menuItemsBean.name); 
prayerTitle.setText(menuItemsBean.title); 
createdOn.setText(menuItemsBean.created_on); 

TextView textView = new TextView(context); 


//prayerMessage.setText(menuItemsBean.message); 
RelativeLayout.LayoutParams p = new 
RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 
        RelativeLayout.LayoutParams.WRAP_CONTENT); 
p.addRule(RelativeLayout.BELOW, R.id.image); 
textView.setLayoutParams(p); 
textView.setPadding(5, 5, 5, 5); 
textView.setTextColor(Color.parseColor("#ffffff")); 
//textView.setText(menuItemsBean.message); 
String message = "please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life please God forgive me for all my mistakes i have ever done in my life end"; 

message = menuItemsBean.message; 
textView.setText(message); 

ViewGroup viewGroup = (ViewGroup) v; 
viewGroup.addView(textView); 

RelativeLayout.LayoutParams param = (RelativeLayout.LayoutParams) 
textView.getLayoutParams(); 

AbsListView.LayoutParams layoutParams = (AbsListView.LayoutParams) 

viewGroup.getLayoutParams(); 
//layoutParams.height +=(); 
return v; 

私はlistViewのために膨張したカスタムビューの高さを変更したいです。 私はこれを試しましたが、動作しません。すべてのセルで異なる高さをメッセージTextViewに依存したいと思っています。

誰でも助けてください

..

+0

私に教えてください、以下の解決策について... – GensaGames

答えて

0

あなたの実現の問題は、リストビューの基本です。 ベースオブジェクトから、ListViewはすべてのビューに対して単一のサイズを呼び出し、すべてのアクションを無効にします。あなたの仕事のためにあなた自身のリストを使用する必要があります。例えば、

1) 使用して、いくつかのレイアウト:

<ScrollView> 
    <LinearLayout> 
     //Add in loop all your views in code above! 
    </LinearLayout> 
</ScrollView> 

2) がLinkedListView使用:ListViewコントロールのような

このビューをしていますが、追加されるすべてのビューへのリンクが含まれている、とのdoesnそれらを無効にしません。だからあなたはこれを使うことができますし、単純なListView以上のものもあります。 Github - LinkedListView

UPDATEにこのリストをチェックしてください:LinkedListViewを使用して

、ちょうどあなたのプロジェクトにインポートします。アダプタ作成より

public class YourAdapter extends LinkedListView.Adapter { 

    private Context mainContext; 
    private LinkedList<View> mainViewList; 

    public CirclePagerAdapter (Context mainContext) { 
     this.mainContext = mainContext; 
     mainViewList = new LinkedList<>(); 
    } 

    //CALL THIS TO ADD YOUR OWN VIEW 
    public void addSimpleView (View v) { 
     mainViewList.add(v) 
     notifyDatasetChanged(); 
    } 


    //CALL THIS TO DELETE VIEW 
    public void deleteView(int index) { 
     mainViewList.remove(index); 
     notifyDatasetChanged(); 
    } 

    @Override 
     public View getObjectView(int position) { 
     if (position < mainViewList.size()) 
      return mainViewList.get(position); 

     return null; 
    } 

    @Override 
    public int getObjectCount() { 
     return mainViewList.size(); 
} 

アクティビティでアダプタコールを作成した後で!

LinkedListView listView = new LinkedListView (getContext()); 
LinkedListView.Adapter adapter = new MyBaseAdapter(); 
listview.setViewPager(adapter); 

非常にうまく機能します。