我有一个自定义ListView
BaseAdapter
,其中包含每行中的按钮ImageView
和SeekBar
,具体取决于设备。我想根据更新状态更新状态收到的价值。
要更新视图代码
Roomactivity
public class RoomActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
}
public static void receivedvalue(String receivedvalue)
{
// TODO Auto-generated method stub
if(RoomActivity.active==false)
{
}
else
{
if(id.equals(received[1]))
{
customadapter.updateListView(i,status,device);
}
}
}
}
customadapter
class customadapter extends BaseAdapter implements ListAdapter
{
public static void updateListView(int position, String status, String device)
{
// TODO Auto-generated method stub
View convertView =listview.getChildAt(position);
if(list.contains(device))
{
SeekBar bar = (SeekBar) convertView.findViewById(R.id.dimmerseekBar);
bar.setProgress(Integer.parseInt(status));
}
else
{
ImageButton switchingactiveicon = (ImageButton)convertView.findViewById(R.id.switchingactiveicon);
switchingactiveicon.setImageResource(R.drawable.redled);
}
}
}
状态正在使用SeekBar
进行更新,但是当我尝试设置图片时,它会以[{1}}的形式提供预览。
我将如何解决这个问题,为什么会出现这个问题。任何人都可以帮助我,我尝试了不同的形式,但没有工作。
答案 0 :(得分:0)
你不能单独做那一行。 只需离开android太刷新视图。 也就是说,在getView方法下,对控件执行赋值。
声明listview public
public List<T> listview;
从活动或片段中分配更新的值。并致电adapter.Notifydatasetchanged();
答案 1 :(得分:0)
要更新单个列表项,您必须在指定位置获取视图,然后更新视图。
您可以使用以下方法获取list_item,
public View getViewByPosition(int position) {
final int firstListItemPosition = filesListview.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + filesListview.getChildCount() - 1;
if (position < firstListItemPosition || position > lastListItemPosition) {
// return filesListview.getAdapter().getView(position, filesListview.getChildAt(position), filesListview);
return null;
} else {
final int childIndex = position - firstListItemPosition;
return filesListview.getChildAt(childIndex);
}
}
如果给定位置的View在listview中可见,则上面的方法将返回视图,否则它将返回null。例如,如果列表视图包含20个元素,并且当前listview显示0-6个元素,那么上面的方法将返回0-6的视图,其他将返回null。
View viewByPosition = getViewByPosition(position;
// If the retrived view is not null then udpate the view otherwise ignore.
if (viewByPosition != null) {
//Update the view
}
希望这会对你有帮助!
答案 2 :(得分:0)
您需要在想要刷新时再次调用适配器,然后才能使用
例如,
private DataAdapter dataAdapter;
_dataAdapter = new DataAdapter(Activity.this);
if (_dataAdapter != null) {
DayList.setAdapter(_dataAdapter);
}