Android 带有计时器的自定义listview适配器在滚动时刷新
我已经创建了一个定制的listview适配器来安装一个按钮、一个定制的计时器和一个textview。当我滚动我的listview时,“隐藏”的行会自动刷新,所以计时器会自动刷新,即使计时器被隐藏,我如何保持计时器运行? 我是Android开发的新手,所以我可能做错了什么;我知道listview在滚动时会刷新它的行,但也许我在后台运行计时器时遗漏了一些东西Android 带有计时器的自定义listview适配器在滚动时刷新,android,listview,chronometer,Android,Listview,Chronometer,我已经创建了一个定制的listview适配器来安装一个按钮、一个定制的计时器和一个textview。当我滚动我的listview时,“隐藏”的行会自动刷新,所以计时器会自动刷新,即使计时器被隐藏,我如何保持计时器运行? 我是Android开发的新手,所以我可能做错了什么;我知道listview在滚动时会刷新它的行,但也许我在后台运行计时器时遗漏了一些东西 public class MyCustomAdapter extends BaseAdapter { ArrayList<St
public class MyCustomAdapter extends BaseAdapter {
ArrayList<String> users;
Context context;
LayoutInflater inflater = null;
public MyCustomAdapter(Activity mainActivity, ArrayList<String> usersList) {
// TODO Auto-generated constructor stub
users = usersList;
context = mainActivity;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return users.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return users.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
private class Holder {
TextView tv;
CustomChrono cr;
Button but;
}
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
// TODO Auto-generated method stub
final Holder holder = new Holder();
View rowView;
rowView = inflater.inflate(R.layout.customized_list_view, null);
holder.tv = (TextView) rowView.findViewById(R.id.names_laps);
holder.cr = (CustomChrono) rowView.findViewById(R.id.chronometer_laps);
holder.but = (Button) rowView.findViewById(R.id.stop_button);
holder.cr.start();
holder.but.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//((ListView) parent).performItemClick(v, position, 0);
holder.cr.stop();
stopped = true;
}
});
holder.tv.setText(users.get(position));
rowView.setTag(holder);
return rowView;
}
公共类MyCustomAdapter扩展了BaseAdapter{
ArrayList用户;
语境;
排气充气机=空;
公共MyCustomAdapter(活动mainActivity,ArrayList usersList){
//TODO自动生成的构造函数存根
用户=用户列表;
上下文=主要活动;
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回users.size();
}
@凌驾
公共对象getItem(int位置){
//TODO自动生成的方法存根
返回用户。获取(位置);
}
@凌驾
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回位置;
}
私人阶级持有者{
文本视图电视;
CustomChrono cr;
按钮但是;
}
@凌驾
公共视图getView(最终整型位置、视图转换视图、最终视图组父视图){
//TODO自动生成的方法存根
最终支架=新支架();
视图行视图;
rowView=充气机。充气(R.layout.customized\u list\u视图,空);
holder.tv=(TextView)rowView.findViewById(R.id.names\u laps);
holder.cr=(CustomChrono)rowView.findViewById(R.id.天文计\u圈);
holder.but=(按钮)rowView.findViewById(R.id.stop_按钮);
holder.cr.start();
holder.but.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//((ListView)父级).performItemClick(v,位置,0);
保持架。铬停止();
停止=真;
}
});
holder.tv.setText(users.get(position));
rowView.setTag(支架);
返回行视图;
}
}
然后我有了我的活动类,在这里我使用这个适配器
public class RunnerLaps extends AppCompatActivity {
ListView list;
ArrayList<String> runner_array;
private Map<Runner,String> map = new HashMap<Runner,String>(10);
private boolean isClicked = true;
private boolean isStartedNow = false;
boolean stopped = false;
ArrayList<Runner> arr_runners;
ArrayList<Runner> runners_arrList;
private long previousClickTime1 = 0;
Runner r = null;
String m = "";
SerializableManager serializableManager;
String filename = "myfile";
FileOutputStream outputStream = null;
ObjectOutputStream objectOutputStream = null;
//Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_runner_laps);
Intent i = getIntent();
serializableManager = new SerializableManager();
runner_array = (ArrayList<String>) getIntent().getSerializableExtra("KEY");
ArrayList<Runner> running = getIntent().getExtras().getParcelableArrayList("arr2");
runners_arrList = new ArrayList<Runner>(runner_array.size());
for (String r : runner_array)
{
runners_arrList.add(new Runner(r));
}
for (int f = 0; f < runners_arrList.size();f++)
{
Log.d("Runner: " + f,runners_arrList.get(f).getName());
}
m = getIntent().getExtras().getString("booly");
for (int j = 0; j < runner_array.size(); j++) {
Runner r = new Runner(runner_array.get(j));
map.put(r, runner_array.get(j));
}
if (m!= null)
{
stopped = true;
}
list = (ListView) findViewById(R.id.laps_list);
final MyCustomAdapter adapter = new MyCustomAdapter(RunnerLaps.this,runner_array);
list.setAdapter(adapter);
//addRunners();
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
CustomChrono chr = (CustomChrono) view.findViewById(R.id.chronometer_laps);
r = runners_arrList.get(position);
r.setTemp(System.currentTimeMillis());
long temp = r.getTemp();
previousClickTime1 = temp;
if (previousClickTime1 != 0 && previousClickTime1 - temp < 300)
{
if (stopped == true)
{
chr.stop();
r.laps[r.counter] = chr.getText().toString();
r.increaseCounter();
Intent i = new Intent (RunnerLaps.this,Runner_Display.class);
i.putExtra("key",(Serializable) r);
i.putParcelableArrayListExtra("arr",arr_runners);
for (int h = 0; h < runners_arrList.size();h++)
{
System.out.println(runners_arrList.get(h).getName() + "\n");
System.out.println(runners_arrList.get(h).laps[0] + "\n");
System.out.println(runners_arrList.get(h).laps[1] + "\n");
System.out.println(runners_arrList.get(h).laps[2] + "\n");
}
startActivity(i);
}
else
{
r.laps[r.counter] = chr.getText().toString();
r.increaseCounter();
for (int h = 0; h < runner_array.size();h++)
{
System.out.println(runners_arrList.get(h).getName() + "\n");
System.out.println(runners_arrList.get(h).laps[0] + "\n");
System.out.println(runners_arrList.get(h).laps[1] + "\n");
System.out.println(runners_arrList.get(h).laps[2] + "\n");
}
}
}
else
{}
}
});
}
公共类RunnerLaps扩展AppCompative活动{
列表视图列表;
ArrayList runner_数组;
私有映射=新的HashMap(10);
私有布尔值isClicked=true;
私有布尔值isStartedNow=false;
布尔停止=假;
ArrayList arr_跑步者;
ArrayList\u arrList;
private long previousClickTime1=0;
r=null;
字符串m=”“;
SerializableManager SerializableManager;
字符串filename=“myfile”;
FileOutputStream outputStream=null;
ObjectOutputStream ObjectOutputStream=null;
//按钮b;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u runner\u laps);
Intent i=getIntent();
serializableManager=新的serializableManager();
runner_array=(ArrayList)getIntent().getSerializableExtra(“KEY”);
ArrayList running=getIntent().getExtras().getParcelableArrayList(“arr2”);
runners\u arrList=newarraylist(runner\u array.size());
for(字符串r:runner\u数组)
{
跑步者列表。添加(新跑步者(r));
}
对于(int f=0;f