android之listview點選item展開內容
本文轉載自:
http://blog.csdn.net/baidu_nod/article/details/38610749
- import java.util.ArrayList;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.View.OnTouchListener;
-
import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.ArrayAdapter;
- import android.widget.BaseAdapter;
- import android.widget.Button;
- import android.widget.ListView;
- import android.widget.RelativeLayout;
-
import android.widget.TextView;
- publicclass MainActivity extends Activity {
- private ArrayList<MyData> myList = new ArrayList<MyData>();
- private myAdapter myAdapter;
- private LayoutInflater inflater = null;
- privateint oldPostion = -1;
- @Override
-
protectedvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- final ListView list = (ListView) findViewById(R.id.draggable_list);
- MyData data = new MyData();
- data.name = "11";
- myList.add(data);
- data = new MyData();
- data.name = "22";
- myList.add(data);
- data = new MyData();
- data.name = "33";
- myList.add(data);
- data = new MyData();
- data.name = "44";
- myList.add(data);
- data = new MyData();
- data.name = "55";
- myList.add(data);
- data = new MyData();
- data.name = "66";
- myList.add(data);
- data = new MyData();
- data.name = "77";
- myList.add(data);
- inflater = LayoutInflater.from(this);
- TextView header = (TextView)inflater.inflate(R.layout.header, null);
- TextView footer = (TextView)inflater.inflate(R.layout.footer, null);
- //list.addFooterView(footer);
- //list.addHeaderView(header);
- myAdapter = new myAdapter();
- list.setAdapter(myAdapter);
- list.setOnItemClickListener(new OnItemClickListener() {
- @Override
- publicvoid onItemClick(AdapterView<?> parent, View view, int position, long id) {
- MyData data = myList.get(position);
- if (oldPostion == position) {
- if (data.expand) {
- oldPostion = -1;
- }
- data.expand = !data.expand;
- }else{
- oldPostion = position;
- data.expand = true;
- }
- int totalHeight = 0;
- for(int i=0;i<myAdapter.getCount();i++) {
- View viewItem = myAdapter.getView(i, null, list);//這個很重要,那個展開的item的measureHeight比其他的大
- viewItem.measure(0, 0);
- totalHeight += viewItem.getMeasuredHeight();
- }
- ViewGroup.LayoutParams params = list.getLayoutParams();
- params.height = totalHeight
- + (list.getDividerHeight() * (list.getCount() - 1));
- list.setLayoutParams(params);
- myAdapter.notifyDataSetChanged();
- }
- });
- Button btn = (Button)findViewById(R.id.btn);
- btn.setOnClickListener(new View.OnClickListener() {
- @Override
- publicvoid onClick(View v) {
- }
- });
- }
- privateclass myAdapter extends BaseAdapter{
- @Override
- publicint getCount() {
- return myList.size();
- }
- @Override
- public Object getItem(int position) {
- return myList.get(position);
- }
- @Override
- publiclong getItemId(int position) {
- return position;
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- MyTag tag = new MyTag();
- MyData data = myList.get(position);
- if(convertView == null) {
- convertView = inflater.inflate(R.layout.item_layout, null);
- tag.item1 = (TextView)convertView.findViewById(R.id.item1);
- tag.item2 = (RelativeLayout)convertView.findViewById(R.id.item2);
- convertView.setTag(tag);
- }else{
- tag = (MyTag)convertView.getTag();
- }
- if(data.expand) {
- tag.item2.setVisibility(View.VISIBLE);
- }else{
- tag.item2.setVisibility(View.GONE);
- }
- tag.item1.setText(data.name);
- return convertView;
- }
- }
- privateclass MyTag{
- private TextView item1;
- private RelativeLayout item2;
- }
- privateclass MyData{
- boolean expand;
- String name;
- }
- }
Layout:
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="50dp" >
- <TextView
- android:id="@+id/item1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="10dp"
- android:layout_centerHorizontal="true"
- android:gravity="center"
- android:text="Header"
- android:textColor="#000000"
- android:textSize="20sp" >
- </TextView>
- <RelativeLayout
- android:id="@+id/item2"
- android:layout_below="@id/item1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="35dp"
-
相關推薦
android之listview點選item展開內容
本文轉載自: http://blog.csdn.net/baidu_nod/article/details/38610749 import java.util.ArrayList; import android.app.Activity; import and
android的ListView點擊item使item展開的做法
ram visible draggable baseadapt lns tco ttext long aid 直接上代碼把。主要是又一次給item measure高度,直接上代碼把 import java.util.ArrayList; import android
android listView點選item,高亮顯示
實現listView中選擇item高亮的功能,最重要的程式碼就是 adapter.notifyDataSetInvalidated(); 通知觀察者,此條資料不再有效。 其次需要在實現BaseAdapter的類中新增一個方法,紀錄選中的item的id
ListView點選Item更換顯示內容圖片
先上效果圖 佈局檔案(就是一個listView) <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.androi
android ListView點選item刪除事件的實現
2016 -10 -12 修改 之前只是為自己做個筆記,沒想到還挺多人需要這個,現在對程式碼進行了優化,並附上原始碼,希望能夠幫助到需要的同行 activity_main: <LinearLayout xmlns:android="http://schema
Android中ListView點選onItemClick不響應,onTouch和onItemLongClick響應
這裡先說以下原因,我這裡的ListView不能點選,可能是跟執行緒更新UI有關,與獲取焦點之類無關。 程式裡的ListView設定了點選監聽setOnItemClickListener,長按監聽setOnItemLongClickListener,觸控監聽setOnTouchListener。
listview點選item,在item的上邊彈出popwindow
public class ListActivity extends Activity { private PopupWindow popupWindow; private TextView mTextView; @Ove
ListView點選item底部彈出popupWindow刪除、修改、取消選擇框
先看一下效果: 點選單個item彈出選擇框,可以選擇刪除或者修改。刪除單條item,或者跳轉到修改頁面。 listview的佈局: <?xml version="1.0" encoding="utf-8"?> <LinearLay
Android中ListView點選事件失效的解決辦法
今天的第二篇部落格了,每一篇都只為了記錄我所做專案中遇到的一些問題。 現在我所做的專案是這樣的:我做了一個讀取手機通訊記錄的介面,使用了ListView控制元件,在ListView的item中添加了一個按鈕。程式碼編寫完成後,經過模擬器執行,發現ListView的setOn
ListView點選item改變背景,重新選中另一項重新整理,預設是選中第一項的狀態
今天在工作中遇到一個需求,一個橫版的listview,需要設定item選中之後改變當前item的背景色,重新選擇另一個item之後新選擇的改變背景,原來的恢復,並且需要設定第一項預設選中,開始想的解決方案是給item的根目錄背景設定一個選擇器,點選時一種顏色,取消點選一種顏
android捕獲ListView中每個item點擊事件
ont app eat sta cell undle android number stat package com.wps.android; import java.util.ArrayList; import android.app.Activity;
Android之ListView的item獲取不到焦點
前兩天我在寫一個ListView,其中自定義的item中的控制元件有ImageView、TextView、Button,反正是比較複雜,寫完一整套流程後,真機一執行,詭異的事情出現了,點選item居然無響應。這怎麼回事呢?找了又找,程式碼看了一遍又一遍,沒問題
Android MaterialDesign之水波點選效果的幾種實現方法
什麼是水波點選的效果? 下面是幾種不同的實現方法的效果圖以及實現方法 Video_2016-08-31_003846 如何實現? 方法一 使用
Android-文字摺疊點選展開
資訊欄,景點介紹,購物資訊,進場會使用到文字摺疊的方法 實現非常簡單,這裡就不哆嗦了 效果如下: Demo:https://github.com/LonglyWolf/NavigationSystemHLJU 這裡用到了三方類庫,在app/gradle新增依賴如下: /
Android ListView點選之後保持更換的背景色,實現已讀功能
因為專案中有這樣的需求:一般訊息類或者資訊類的介面,都有類似於網易客戶端的點選之後更換背景色,並且保持這個顏色,表示已讀取該條資訊。這個功能一開始覺得已經實現了,在我的另一篇部落格上有:點選開啟連結 後來測試人員在測試的時候,發現這樣一個奇怪的問題:
Android通知之通知欄點選通知後返回正在執行的程式,而不是一個新Activity
一般的寫法,點選通知欄進入的Activity是一個新建立的Activity,而不是原先正在執行的Activity,這和我的想法是背道而馳的。當你點選返回按鍵退出這個Activity之後,發現,原先正在執行的Activity終於出現了。明顯這樣是不符合條理的。
ListView點選事件失效(item裡面有button按鈕控制元件)解決方法
ListView點選事件失效解決方法: 一般出現這個情況,就是你的item裡面有按鈕的點選事件,你的item裡面有button控制元件,button控制元件是搶佔焦點的,只要在你的item佈局裡面這樣子寫就可以了: &l
Android TextView的點選效果之改變背景顏色
在學習Android過程中,我們有時想要TextView有點選效果,不是文字的變化而是背景顏色的變化,那麼怎麼來實現呢? 下面將介紹如何實現: 1.在res目錄下的drawable(此檔案是自己手動建立的)檔案下建立一個點選效果的檔案:tv_bg_selector.xml
Android之ListView包含RadioButton的單選問題解決辦法
1.最簡潔的解決辦法。 adapter裡儲存當前選中的位置變數,getView方法裡,禁用radiobutton的點選事件,只通過listview的onItemClick事件設定選中位置變數,並且通過notifyDataSetChanged重新整理列表。getView方法裡
Android-listview新增控制元件導致listview點選事件失效
今天寫了個demo,dialog自定義佈局添加了個listview,listview item裡面加了個checkBox,需求checkBox在列表裡有單選的效果:測試的時候需要點選item也改變checkBox的選中狀態,然而listview的點選事件失效了。後來發現是失