我正在使用 Searchview
。当我编写查询时,会显示一个列表,当我单击列表项时,我想在搜索 View 中显示被单击项的文本或值。我怎样才能做到这一点。搜索 View 和 TextView 都在 MainAcitivity.java 中。我想从 CustomAdapter.java 类更新 earchview 和 textview 的值。我想在调用 convertView.setOnClickListener
的 onclick()
方法时在 SearchView 中显示值.
这是代码
public class CustomAdapter extends BaseAdapter {
Context c;
ArrayList<Planet> planets;
LayoutInflater inflater;
TextView nameTxt;
public CustomAdapter(Context c, ArrayList<Planet> planets) {
this.c = c;
this.planets = planets;
}
@Override
public int getCount() {
return planets.size();
}
@Override
public Object getItem(int position) {
return planets.get(position);
}
@Override
public long getItemId(int position) {
Log.d("getItemId is",":"+position);
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(inflater==null)
{
inflater= (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
if(convertView==null)
{
convertView=inflater.inflate(R.layout.model,parent,false);
}
nameTxt= (TextView) convertView.findViewById(R.id.nameTxt);
final int pos=position;
nameTxt.setText(planets.get(pos).getName());
nameTxt.getText().toString();
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(c,planets.get(pos).getName(),Toast.LENGTH_SHORT).show();
planets.clear();
v.setVisibility(View.GONE);
}
});
return convertView;
}
}
我想在调用 convertview 的 onclick()
方法时显示值。
最佳答案
创建一个自定义界面,如
public interface PlanetItemListener{
void onPlanetClicked(Planet planet);
}
然后需要一个 PlanetItemListener 实例作为构造函数参数。
public CustomAdapter(Context c, ArrayList<Planet> planets, PlanetItemListener listener) {
this.c = c;
this.planets = planets;
this.listener = listener;
}
并在点击 block 中通知监听器
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener. onPlanetClicked(planets.get(pos));
}
});
让您的 Activity 实现 PlanetItemListener,并在 block 中执行您的逻辑 onPlanetClicked(Planet planet) {
//你的逻辑
}
关于java - 如何从 java 类更新 MainAcitivity 的 Searchview 和 textView 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51733461/