亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android程序開發(fā)之ListView實現(xiàn)橫向滾動(帶表頭與固定列)

 更新時間:2016年07月08日 10:52:46   作者:yq135314  
這篇文章主要介紹了Android程序開發(fā)之ListView實現(xiàn)橫向滾動(帶表頭與固定列)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

問題背景:在做圖表展示的時候,ListView可以上下左右滑動,但最左邊一列在向右滑動時,保持不變,表頭在向下滑動時保持不變。

有用兩個ListView實現(xiàn)的,但測試過,好像有些問題

這個例子是通過(ListView + HorizontalScrollView)實現(xiàn)的

效果圖:

 

Activity代碼

/** 
* 
* 帶滑動表頭與固定列的ListView 
*/ 
public class HListActivity extends Activity{ 
private ListView mListView; 
//方便測試,直接寫的public 
public HorizontalScrollView mTouchView; 
//裝入所有的HScrollView 
protected List<CHScrollView> mHScrollViews =new ArrayList<CHScrollView>(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.scroll); 
initViews(); 
} 
private void initViews() { 
List<Map<String, String>> datas = new ArrayList<Map<String,String>>(); 
Map<String, String> data = null; 
CHScrollView headerScroll = (CHScrollView) findViewById(R.id.item_scroll_title); 
//添加頭滑動事件 
mHScrollViews.add(headerScroll); 
mListView = (ListView) findViewById(R.id.scroll_list); 
for(int i = 0; i < 100; i++) { 
data = new HashMap<String, String>(); 
data.put("title", "Title_" + i); 
data.put("data_" + 1, "Date_" + 1 + "_" +i ); 
data.put("data_" + 2, "Date_" + 2 + "_" +i ); 
data.put("data_" + 3, "Date_" + 3 + "_" +i ); 
data.put("data_" + 4, "Date_" + 4 + "_" +i ); 
data.put("data_" + 5, "Date_" + 5 + "_" +i ); 
data.put("data_" + 6, "Date_" + 6 + "_" +i ); 
datas.add(data); 
} 
SimpleAdapter adapter = new ScrollAdapter(this, datas, R.layout.item 
, new String[] { "title", "data_1", "data_2", "data_3", "data_4", "data_5", "data_6", } 
, new int[] { R.id.item_title 
, R.id.item_data1 
, R.id.item_data2 
, R.id.item_data3 
, R.id.item_data4 
, R.id.item_data5 
, R.id.item_data6 }); 
mListView.setAdapter(adapter); 
} 
public void addHViews(final CHScrollView hScrollView) { 
if(!mHScrollViews.isEmpty()) { 
int size = mHScrollViews.size(); 
CHScrollView scrollView = mHScrollViews.get(size - 1); 
final int scrollX = scrollView.getScrollX(); 
//第一次滿屏后,向下滑動,有一條數(shù)據(jù)在開始時未加入 
if(scrollX != 0) { 
mListView.post(new Runnable() { 
@Override 
public void run() { 
//當(dāng)listView刷新完成之后,把該條移動到最終位置 
hScrollView.scrollTo(scrollX, 0); 
} 
}); 
} 
} 
mHScrollViews.add(hScrollView); 
} 
public void onScrollChanged(int l, int t, int oldl, int oldt){ 
for(CHScrollView scrollView : mHScrollViews) { 
//防止重復(fù)滑動 
if(mTouchView != scrollView) 
scrollView.smoothScrollTo(l, t); 
} 
} 
class ScrollAdapter extends SimpleAdapter { 
private List<? extends Map<String, ?>> datas; 
private int res; 
private String[] from; 
private int[] to; 
private Context context; 
public ScrollAdapter(Context context, 
List<? extends Map<String, ?>> data, int resource, 
String[] from, int[] to) { 
super(context, data, resource, from, to); 
this.context = context; 
this.datas = data; 
this.res = resource; 
this.from = from; 
this.to = to; 
} 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
View v = convertView; 
if(v == null) { 
v = LayoutInflater.from(context).inflate(res, null); 
//第一次初始化的時候裝進(jìn)來 
addHViews((CHScrollView) v.findViewById(R.id.item_scroll)); 
View[] views = new View[to.length]; 
for(int i = 0; i < to.length; i++) { 
View tv = v.findViewById(to[i]);; 
tv.setOnClickListener(clickListener); 
views[i] = tv; 
} 
v.setTag(views); 
} 
View[] holders = (View[]) v.getTag(); 
int len = holders.length; 
for(int i = 0 ; i < len; i++) { 
((TextView)holders[i]).setText(this.datas.get(position).get(from[i]).toString()); 
} 
return v; 
} 
} 
//測試點擊的事件 
protected View.OnClickListener clickListener = new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
Toast.makeText(HListActivity.this, ((TextView)v).getText(), Toast.LENGTH_SHORT).show(); 
} 
}; 
} 

滑動view代碼

/** 
* 滑動代碼 
*/ 
public class CHScrollView extends HorizontalScrollView { 
HListActivity activity; 
public CHScrollView(Context context, AttributeSet attrs, int defStyle) { 
super(context, attrs, defStyle); 
activity = (HListActivity) context; 
} 
public CHScrollView(Context context, AttributeSet attrs) { 
super(context, attrs); 
activity = (HListActivity) context; 
} 
public CHScrollView(Context context) { 
super(context); 
activity = (HListActivity) context; 
} 
@Override 
public boolean onTouchEvent(MotionEvent ev) { 
//進(jìn)行觸摸賦值 
activity.mTouchView = this; 
return super.onTouchEvent(ev); 
} 
@Override 
protected void onScrollChanged(int l, int t, int oldl, int oldt) { 
//當(dāng)當(dāng)前的CHSCrollView被觸摸時,滑動其它 
if(activity.mTouchView == this) { 
activity.onScrollChanged(l, t, oldl, oldt); 
}else{ 
super.onScrollChanged(l, t, oldl, oldt); 
} 
} 
} 

以上所述是小編給大家介紹的Android程序開發(fā)之ListView實現(xiàn)橫向滾動(帶表頭與固定列),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 使用androidx BiometricPrompt實現(xiàn)指紋驗證功能

    使用androidx BiometricPrompt實現(xiàn)指紋驗證功能

    這篇文章主要介紹了使用androidx BiometricPrompt實現(xiàn)指紋驗證功能,對android指紋驗證相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2021-07-07
  • Android 線程thread的兩種實現(xiàn)方法(必看)

    Android 線程thread的兩種實現(xiàn)方法(必看)

    下面小編就為大家?guī)硪黄狝ndroid 線程thread的兩種實現(xiàn)方法(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 淺析Android TextView常用屬性

    淺析Android TextView常用屬性

    TextView是用來顯示文本的組件。這篇文章給大家詳細(xì)介紹了Android TextView常用屬性 ,需要的朋友參考下
    2018-04-04
  • Android 多個Activity之間的傳值

    Android 多個Activity之間的傳值

    本篇文章將用一個實例,詳細(xì)的為大家講解怎么注冊并激活一個新的Activity,以及多個Activity之間如何傳值
    2013-11-11
  • Android中BroadcastReceiver實現(xiàn)短信關(guān)鍵字自動回復(fù)功能

    Android中BroadcastReceiver實現(xiàn)短信關(guān)鍵字自動回復(fù)功能

    實現(xiàn)手機(jī)短信監(jiān)聽的方式有兩種:一是通過ContentObserver觀察者實現(xiàn)監(jiān)聽,另一種就是通過廣播即BroadcastReceiver實現(xiàn)短信監(jiān)聽,文章中通過使用BroadcastReceiver實現(xiàn)有新短信的及時監(jiān)聽及包含設(shè)定的關(guān)鍵字時自動回復(fù)
    2018-06-06
  • 基于Android實現(xiàn)顏色漸變動畫效果

    基于Android實現(xiàn)顏色漸變動畫效果

    本文主要給大家介紹了Android實現(xiàn)顏色漸變動畫效果,實現(xiàn)這樣的一個動畫漸變的效果很簡單,只需要兩步,第一步用GradientDrawable實現(xiàn)兩個顏色之間的漸變效果,第二步用屬性動畫實現(xiàn)顏色變化的過程,需要的朋友可以參考下
    2024-01-01
  • Android中Memory Leak原因分析及解決辦法

    Android中Memory Leak原因分析及解決辦法

    這篇文章主要介紹了Android中Memory Leak原因分析及解決辦法,需要的朋友跟著學(xué)習(xí)下吧。
    2017-12-12
  • 輕松實現(xiàn)安卓(Android)九宮格解鎖

    輕松實現(xiàn)安卓(Android)九宮格解鎖

    在平常使用手機(jī)的過程中,九宮格解鎖是我們經(jīng)常接觸到的。常見的比如有鎖屏中的九宮格,還有支付寶中的九宮格等。因為九宮格可以保護(hù)用戶的隱私,所以它的應(yīng)用面很廣泛。那么今天我們就來自定義一個屬于自己的九宮格吧!
    2016-08-08
  • Android Studio配合WampServer完成本地Web服務(wù)器訪問的問題

    Android Studio配合WampServer完成本地Web服務(wù)器訪問的問題

    這篇文章主要介紹了Android Studio配合WampServer完成本地Web服務(wù)器訪問,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Android字符串資源文件format方法使用實例

    Android字符串資源文件format方法使用實例

    本文介紹了Android的資源文件values/strings.xml中如何實現(xiàn)格式化字符串,這里舉個簡單的例子供大家參考
    2013-11-11

最新評論