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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

android listview item置顶,ListView的item置顶

發布時間:2023/12/4 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android listview item置顶,ListView的item置顶 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ListView的item設置置頂

1.activity

public class TopListViewActivity extends Activity {

private static int ON_TOP = 1;

private static int CANCEL_TOP = 0;

public static String TOP_STATES = "TOP";

private ListView mListView;

private List sessionList;

private SessionItemAdapter itemAdapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_top_listview);

initView();

registerListener();

}

private void registerListener() {

mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

@Override

public boolean onItemLongClick(AdapterView> parent, View view, final int position, long id) {

final Session session = (Session) parent.getItemAtPosition(position);

Bundle bundle = new Bundle();

bundle.putInt(TOP_STATES, session.getTop());

PopupDialogFragment popupDialog = new PopupDialogFragment();

popupDialog.setArguments(bundle);

popupDialog.setItemOnClickListener(new PopupDialogFragment.DialogItemOnClickListener() {

@Override

public void onTop() {

//置頂

session.setTop(ON_TOP);

session.setTime(System.currentTimeMillis());

refreshView();

}

@Override

public void onCancel() {

//取消

session.setTop(CANCEL_TOP);

refreshView();

}

});

popupDialog.show(getFragmentManager(), "POPUP");

return true;

}

});

}

private void initView() {

mListView = (ListView) findViewById(R.id.lv);

sessionList = new ArrayList<>();

//簡單實現Item數據

TypedArray iconArray = getResources().obtainTypedArray(R.array.icon_array);

for (int i = 0; i < 8; i++) {

Session session = new Session();

session.setAvatar(iconArray.getResourceId(i,R.mipmap.ic_launcher));

sessionList.add(session);

}

itemAdapter = new SessionItemAdapter(this);

mListView.setAdapter(itemAdapter);

refreshView();

iconArray.recycle();

}

private void refreshView() {

//如果不調用sort方法,是不會進行排序的,也就不會調用compareTo

Collections.sort(sessionList);

itemAdapter.updateData(sessionList);

}

}

2.fragment

public class PopupDialogFragment extends DialogFragment {

private DialogItemOnClickListener itemOnClickListener;

@Nullable

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.popview, null);

TextView onTopTv = (TextView) view.findViewById(R.id.on_top_tv);

TextView cancelTv = (TextView) view.findViewById(R.id.cancel_top_tv);

Bundle bundle = getArguments();

int isTop = bundle.getInt(TopListViewActivity.TOP_STATES);

//判斷是否已經置頂

if (isTop == 1) {

onTopTv.setVisibility(View.GONE);

cancelTv.setVisibility(View.VISIBLE);

} else if (isTop == 0) {

onTopTv.setVisibility(View.VISIBLE);

cancelTv.setVisibility(View.GONE);

}

onTopTv.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

getDialog().dismiss();

itemOnClickListener.onTop();

}

});

cancelTv.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

getDialog().dismiss();

itemOnClickListener.onCancel();

}

});

getDialog().getWindow().requestFeature(STYLE_NO_TITLE);

setStyle(STYLE_NO_FRAME, android.R.style.Theme_Light);

setCancelable(true);

getDialog().getWindow().setBackgroundDrawableResource(R.color.write_bg);

return view;

}

public void setItemOnClickListener(DialogItemOnClickListener itemOnClickListener) {

this.itemOnClickListener = itemOnClickListener;

}

public interface DialogItemOnClickListener {

void onTop();

void onCancel();

}

}

3.itemview.xml

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/bg"

android:orientation="horizontal">

android:id="@+id/avatar_img"

android:layout_width="60dp"

android:layout_height="60dp"

android:layout_gravity="center_vertical" />

android:id="@+id/textView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_vertical"

android:layout_marginLeft="30dp"

android:text="hello word"

android:textSize="20sp" />

4.attrs

@mipmap/ic_ac_unit_black

@mipmap/ic_airport_shuttle_black

@mipmap/ic_all_inclusive_black

@mipmap/ic_beach_access_black

@mipmap/ic_casino_black

@mipmap/ic_child_care_black

@mipmap/ic_child_friendly_black

@mipmap/ic_free_breakfast_black

5.popview

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_marginLeft="20dp"

android:layout_marginRight="20dp"

android:background="@color/write_bg"

>

android:id="@+id/on_top_tv"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:padding="15dp"

android:text="選擇置頂"

android:textSize="20sp"

android:layout_gravity="center_horizontal"

/>

android:layout_width="match_parent"

android:layout_height="0.4dp"

android:background="@color/common_line_color"/>

android:id="@+id/cancel_top_tv"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:gravity="center_horizontal"

android:padding="15dp"

android:text="取消置頂"

android:textSize="20sp"

android:layout_gravity="center_horizontal"

/>

6.session

package com.antquenn.demos.bean;

import java.io.Serializable;

import java.util.Calendar;

/**

* Created by ant_quenn on 2020/11/10.

*/

public class Session implements Serializable, Comparable {

/**

* 是否置頂

*/

public int top;

/**

* 置頂時間

**/

public long time;

/**

* 頭像

*/

public int avatar;

public long getTime() {

return time;

}

public void setTime(long time) {

this.time = time;

}

public int getTop() {

return top;

}

public void setTop(int top) {

this.top = top;

}

public int getAvatar() {

return avatar;

}

public void setAvatar(int avatar) {

this.avatar = avatar;

}

@Override

public int compareTo(Object another) {

if (another == null || !(another instanceof Session)) {

return -1;

}

Session otherSession = (Session) another;

/**置頂判斷 ArrayAdapter是按照升序從上到下排序的,就是默認的自然排序

* 如果是相等的情況下返回0,包括都置頂或者都不置頂,返回0的情況下要

* 再做判斷,拿它們置頂時間進行判斷

* 如果是不相等的情況下,otherSession是置頂的,則當前session是非置頂的,

* 應該在otherSession下面,所以返回1

* 同樣,session是置頂的,則當前otherSession是非置頂的,

* 應該在otherSession上面,所以返回-1

* */

int result = 0 - (top - otherSession.getTop());

if (result == 0) {

result = 0 - compareToTime(time, otherSession.getTime());

}

return result;

}

/**

* 根據時間對比

* */

public static int compareToTime(long lhs, long rhs) {

Calendar cLhs = Calendar.getInstance();

Calendar cRhs = Calendar.getInstance();

cLhs.setTimeInMillis(lhs);

cRhs.setTimeInMillis(rhs);

return cLhs.compareTo(cRhs);

}

}

總結

以上是生活随笔為你收集整理的android listview item置顶,ListView的item置顶的全部內容,希望文章能夠幫你解決所遇到的問題。

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