java - 如何从 java 类更新 MainAcitivity 的 Searchview 和 textView 的值

标签 java android android-sqlite

我正在使用 Searchview。当我编写查询时,会显示一个列表,当我单击列表项时,我想在搜索 View 中显示被单击项的文本或值。我怎样才能做到这一点。搜索 View 和 TextView 都在 MainAcitivity.java 中。我想从 CustomAdapter.java 类更新 earchview 和 textview 的值。我想在调用 convertView.setOnClickListeneronclick() 方法时在 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/

相关文章:

java - 如何缩放图像

java - Javax 方法的错误使用

java - Android 唯一 key

java - 如何通过ID从SQLITE数据库中删除数据

java - Android Sqlite 仅更新第一行

java - 如何将 1 个 JPanel 和 1 个自定义 JPanel 放入 JFrame 中

java - 无法关闭前一帧以查看新帧 java

Android Studio 库 "error: package does not exist"

android - 什么是百分比支持库的 minSDK?

android - 销毁数据库-android生命周期