Android的更新列表视图不断,但保留的onClick功能 [英] Updating Android Listview Constantly but Retain onClick functionality
问题描述
我创建的每个列表视图查看一个计时器,但是当我打电话notifyDataSetChange()不断,我无法点击我的按钮。
有没有一种方法不断更新时,可以保留一个ListView视图内按钮,EDITTEXT功能。有没有什么办法?
谢谢!
UPDATE:这是code我正在不间断的更新
@覆盖
公共无效onActivityCreated(@Nullable捆绑savedInstanceState){
super.onActivityCreated(savedInstanceState); 处理器=新的处理程序();
handler.post(可运行);}
可运行可运行=新的Runnable(){
@覆盖
公共无效的run(){
adapterWhiteMales.notifyDataSetChanged();
handler.postDelayed(可运行,500);
}
};
更新:我在每个列表视图视图按钮
没把我所有的code为getChildView和按钮点击,但这个是主要的设置。
@覆盖
公共查看getChildView(最终诠释groupPosition,最终诠释childPosition,布尔isLastChild,查看视图的ViewGroup以及parentView)
{
如果(查看== NULL){ viewHolderItem =新ViewHolderItem();
吹气=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
鉴于= inflater.inflate(R.layout.row_explistview_child_meet_athletes,parentView,FALSE);
viewHolderItem.btnStartLap =(按钮)view.findViewById(R.id.btnStartLap); view.setTag(viewHolderItem);
}其他{
//使用已经初始化的变量
viewHolderItem =(ViewHolderItem)view.getTag();
}
viewHolderItem.btnStartLap.setOnClickListener(新View.OnClickListener()
{
@覆盖
公共无效的onClick(视图v){
Log.e(,启动单圈单击按钮!);
}
}}
我在我的应用程序之一了一个问题,如果我试图onClick的监听器多次设置将打破监听器,并导致怪异的行为。
试着改变你的getChildView方法,像这样
@覆盖
公共查看getChildView(最终诠释groupPosition,最终诠释childPosition,布尔isLastChild,查看视图的ViewGroup以及parentView)
{
如果(查看== NULL){ viewHolderItem =新ViewHolderItem();
吹气=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
鉴于= inflater.inflate(R.layout.row_explistview_child_meet_athletes,parentView,FALSE);
viewHolderItem.btnStartLap =(按钮)view.findViewById(R.id.btnStartLap);
viewHolderItem.btnStartLap.setOnClickListener(新View.OnClickListener()
{
@覆盖
公共无效的onClick(视图v){
Log.e(,启动单圈单击按钮!);
}
}
view.setTag(viewHolderItem);
}其他{
//使用已经初始化的变量
viewHolderItem =(ViewHolderItem)view.getTag();
}
}
I am creating a timer in each Listview view but when I call notifyDataSetChange() constantly, I am unable to click my buttons.
Is there a way to retain button and editText functionality inside a listview view when updated constantly. Is there any alternatives?
Thanks!
UPDATE: This is the code I am running to update continously
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
handler = new Handler();
handler.post(runnable);
}
Runnable runnable = new Runnable(){
@Override
public void run() {
adapterWhiteMales.notifyDataSetChanged();
handler.postDelayed(runnable, 500);
}
};
UPDATE: My buttons in each listview view Didn't put all my code for the getChildView and button on click, but this is the main setup.
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View view, ViewGroup parentView)
{
if (view == null) {
viewHolderItem = new ViewHolderItem();
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.row_explistview_child_meet_athletes, parentView, false);
viewHolderItem.btnStartLap = (Button) view.findViewById(R.id.btnStartLap);
view.setTag(viewHolderItem);
} else {
// Use already initialized variables
viewHolderItem = (ViewHolderItem) view.getTag();
}
viewHolderItem.btnStartLap.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
Log.e("", "Start Lap Button Clicked!");
}
}
}
I had an issue in one of my apps where if I tried to set the onClick listener multiple times it would break the listener and cause weird behavior.
Try changing your getChildView method like so
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View view, ViewGroup parentView)
{
if (view == null) {
viewHolderItem = new ViewHolderItem();
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.row_explistview_child_meet_athletes, parentView, false);
viewHolderItem.btnStartLap = (Button) view.findViewById(R.id.btnStartLap);
viewHolderItem.btnStartLap.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
Log.e("", "Start Lap Button Clicked!");
}
}
view.setTag(viewHolderItem);
} else {
// Use already initialized variables
viewHolderItem = (ViewHolderItem) view.getTag();
}
}
这篇关于Android的更新列表视图不断,但保留的onClick功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!