日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

动态改变ListView布局

發布時間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态改变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

package sunny.example.ahfourlistviewfocus;import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView;import java.util.ArrayList; import java.util.List;public class MainActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ListView listView = (ListView) findViewById(R.id.focus_listView);List<String> data = new ArrayList<String>();data.add("I am item 1");data.add("I am item 2");data.add("I am item 3");data.add("I am item 4");data.add("I am item 5");final FocusListViewAdapter adapter = new FocusListViewAdapter(this, data);/* public void setAdapter (ListAdapter adapter) Sets the data behind this ListView.*/listView.setAdapter(adapter);listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {adapter.setCurrentItem(position);////*void android.widget.BaseAdapter.notifyDataSetChanged() Notifies the attached observers that the underlying data has been changed and any View reflecting the data set should refresh itself. */ //刷新布局adapter.notifyDataSetChanged();}});}}


foucus item3的情況

總結

以上是生活随笔為你收集整理的动态改变ListView布局的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。