【发布时间】:2015-07-27 13:26:30
【问题描述】:
我制作了自定义 SimpleCursorAdapter,因此当没有电话号码时我可以单击 ListView 内的按钮(该按钮需要呼叫某人)我希望该按钮不可见,起初我的代码正确显示所有内容,但当我向上滚动时向下几次按钮随机变得不可见。
已编辑:当所有这些都可见时很好,但是当一个(ListView 上的项目内的按钮)变得不可见时,它们开始随机变得不可见。
我的代码:
public MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, double lat, double lon) {
super(context, layout, c, from, to);
latC = lat;
lonC = lon;
}
public MyCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.list_view_place_list, parent, false);
return view;
}
@Override
public void bindView(final View view,final Context context,final Cursor cursor) {
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
String name = cursor.getString(cursor.getColumnIndex(PlacesDB.PLACE_NAME));
String address = cursor.getString(cursor.getColumnIndex(PlacesDB.PLACE_ADDRESS));
double lat = cursor.getDouble(cursor.getColumnIndex(PlacesDB.PLACE_LAT));
double lon = cursor.getDouble(cursor.getColumnIndex(PlacesDB.PLACE_LON));
final String phone = cursor.getString(cursor.getColumnIndex(PlacesDB.PLACE_PHONE));
TextView txtName = (TextView) view.findViewById(R.id.txtName);
TextView txtAddress = (TextView) view.findViewById(R.id.txtAddress);
TextView txtDistance = (TextView) view.findViewById(R.id.txtDistance);
txtName.setText(name);
txtAddress.setText(address);
Button btnCall = (Button) view.findViewById(R.id.btnCall);
if (latC != -1) {
double dis = getDistanceFromLatLonInKm(latC, lonC, lat, lon);
if (settings.getString("mk", "km").equals("miles")) {
dis = dis / 1.621371;
txtDistance.setText(String.format("%.3f", dis) + " Miles");
}
else
txtDistance.setText(String.format("%.3f", dis) + " Km");
} else {
txtDistance.setText("Distance not available");
}
if (phone == null){
btnCall.setVisibility(View.INVISIBLE);
}
else {
view.findViewById(R.id.btnCall).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tel;
Intent dialIntent = new Intent();
tel = phone.replace("-", "");
dialIntent.setAction(Intent.ACTION_CALL);
dialIntent.setData(Uri.parse("tel:" + tel));
context.startActivity(dialIntent);
}
});
}
}
【问题讨论】:
标签: android listview android-studio simplecursoradapter