动态改变ListView布局
生活随笔
收集整理的這篇文章主要介紹了
动态改变ListView布局
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在getView()時,通過判斷選擇加載不同的布局。
點擊某個item的時候,變為foucus狀態,其他的items還原。
下面用兩個方法給item設置兩個不同的布局。
//foucus狀態,顯示一個ImageViewprivate View addFocusView(int i) {ImageView iv = new ImageView(mContext);iv.setImageResource(R.drawable.ic_launcher);return iv;} //normal狀態顯示一個ImageView和一個TextViewprivate View addNormalView(int i) {LinearLayout layout = new LinearLayout(mContext);layout.setOrientation(LinearLayout.HORIZONTAL);ImageView iv = new ImageView(mContext);iv.setImageResource(R.drawable.ic);layout.addView(iv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));TextView tv = new TextView(mContext);tv.setText(mData.get(i));layout.addView(tv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));layout.setGravity(Gravity.CENTER);return layout;}
?
FocusListViewAdapter.java
package sunny.example.ahfourlistviewfocus;import android.content.Context; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView;import java.util.List;public class FocusListViewAdapter extends BaseAdapter {private List<String> mData;private Context mContext;private int mCurrentItem = 0;public FocusListViewAdapter(Context context, List<String> data) {this.mContext = context;this.mData = data;}public int getCount() {return mData.size();}public Object getItem(int position) {return mData.get(position);}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {LinearLayout layout = new LinearLayout(mContext);layout.setOrientation(LinearLayout.VERTICAL);if (mCurrentItem == position) {layout.addView(addFocusView(position));} else {layout.addView(addNormalView(position));}return layout;}public void setCurrentItem(int currentItem) {this.mCurrentItem = currentItem;} //foucus狀態,顯示一個ImageViewprivate View addFocusView(int i) {ImageView iv = new ImageView(mContext);iv.setImageResource(R.drawable.ic_launcher);return iv;} //normal狀態顯示一個ImageView和一個TextViewprivate View addNormalView(int i) {LinearLayout layout = new LinearLayout(mContext);layout.setOrientation(LinearLayout.HORIZONTAL);ImageView iv = new ImageView(mContext);iv.setImageResource(R.drawable.ic);layout.addView(iv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));TextView tv = new TextView(mContext);tv.setText(mData.get(i));layout.addView(tv, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT));layout.setGravity(Gravity.CENTER);return layout;} }?
activity_main.xml
?
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ListViewandroid:id="@+id/focus_listView"android:layout_width="match_parent"android:layout_height="wrap_content" /> </LinearLayout>
MainActivity.java
foucus item3的情況
總結
以上是生活随笔為你收集整理的动态改变ListView布局的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓开发人员选项怎么设置(安卓开发人员)
- 下一篇: iPhone 显示“备份失败”应如何解决