我在listview项目中有1个ImageView,1个textview和1个搜索栏。默认情况下,Seekbar的可见性为GONE。现在我想根据数据库值设置搜索栏的可见性。如果数据库值为YES,那么它将在长按时显示搜索条,如果是否,则在长按时它将不执行任何操作。目前,如果我长按任何项目,它会显示搜索栏。
ApplianceAdapter
public class ApplianceAdapter extends CursorAdapter {
public ApplianceAdapter(Context context, Cursor c) {
super(context, c, 0);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.appliancelist, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
TextView txtApplianceName = (TextView) view.findViewById(R.id.txtApplianceName);
final LinearLayout btnApp = (LinearLayout) view.findViewById(R.id.btnApp);
final SeekBar slider = (SeekBar) view.findViewById(R.id.slider);
String appliance = cursor.getString(cursor.getColumnIndexOrThrow("AppName"));
String dimmer = cursor.getString(cursor.getColumnIndexOrThrow("Dimmer"));
txtApplianceName.setText(appliance);
if (dimmer.contains("YES")){
btnApp.setLongClickable(true);
}else if (dimmer.contains("NO")){
btnApp.setLongClickable(false);
}
}
}
设备活动
public class Appliance extends AppCompatActivity {
ListView listView;
ArrayList<HashMap<String,String>> applianceList;
DBOpenHelper db;
String room;
String type;
Cursor appliance;
ApplianceAdapter applianceAdapter;
SeekBar slider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_appliance);
Intent intent = getIntent();
String r = intent.getStringExtra("roomname");
room = r.replace("{name=", "").replace("}","");
db = new DBOpenHelper(this);
listView = (ListView) findViewById(R.id.listAppliance);
appliance = db.getAppliance(room);
applianceAdapter = new ApplianceAdapter(this, appliance);
listView.setAdapter(applianceAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
slider = listView.getChildAt(position).findViewById(R.id.slider);
slider.setVisibility(View.VISIBLE);
return false;
}
});
}
}
答案 0 :(得分:0)
你可以尝试
var IntegerParser = function(filter){
this.parameter = '';
this.filter = filter;
var self = this; // store this to self and use self in inner functions
this.parse = function(parameter){
self.parameter = parseInt(parameter);
}
this.filterBy = function(item){
return item[self.filter] == self.parameter;
}
}
在你的适配器中,
data = [{"stars": 3}, {"stars": 2}]
var ParseParameter = function(){
this.parser = "";
}
ParseParameter.prototype = {
setStrategy: function(parser) {
this.parser = parser;
},
parse: function(parameter) {
return this.parser.parse(parameter);
}
};
var IntegerParser = function(filter){
this.parameter = '';
this.filter = filter;
var self = this;
this.parse = function(parameter){
self.parameter = parseInt(parameter);
}
this.filterBy = function(item){
return item[self.filter] == self.parameter;
}
}
var filter = 'stars',
parameter = '2',
parseParameter = new ParseParameter();
var integerParser = new IntegerParser(filter);
parseParameter.setStrategy(integerParser);
parseParameter.parse(parameter);
var dataFiltered = data.filter(parseParameter.parser.filterBy);
console.log(dataFiltered);