Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将SearchView与具有图像和文本的ListView一起使用_Java_Android_Listview_Search_Searchview - Fatal编程技术网

Java 将SearchView与具有图像和文本的ListView一起使用

Java 将SearchView与具有图像和文本的ListView一起使用,java,android,listview,search,searchview,Java,Android,Listview,Search,Searchview,我遇到了一个问题,我学会了如何使用带有文本的SearchView,但我有一个活动,其中listView包含图像和文本,但我找不到显示过滤器的方法 因此,我调试代码是为了理解为什么会发生这种情况,我在LogCat中得到: java.lang.RuntimeException:无法启动活动组件信息{mundo.hola.app.frank.com.universida2/mundo.hola.app.frank.com.universida2.RankingActividad}:java.lang.

我遇到了一个问题,我学会了如何使用带有文本的SearchView,但我有一个活动,其中listView包含图像和文本,但我找不到显示过滤器的方法

因此,我调试代码是为了理解为什么会发生这种情况,我在LogCat中得到:

java.lang.RuntimeException:无法启动活动组件信息{mundo.hola.app.frank.com.universida2/mundo.hola.app.frank.com.universida2.RankingActividad}:java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.SearchView.setOnQueryTextListener(android.widget.SearchView$OnQueryTextListener)'在空对象引用上

代码编译得很好,但当我试图通过意图访问此活动时,应用程序崩溃

如果有人能帮助我,我将非常感激

活动

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbarLayout_po"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    >
    <android.support.v7.widget.Toolbar
        android:id="@+id/appbar_rank"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        >

        <ImageView
            android:id="@+id/home_rank"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_margin="5dp"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:scaleType="center"
            tools:ignore="ContentDescription"
            android:src="@drawable/ic_first_page_24dp" />

        <SearchView
            android:id="@+id/search_tecnico"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <requestFocus />
        </SearchView>

    </android.support.v7.widget.Toolbar>

</android.support.design.widget.AppBarLayout>


<ListView
    android:id="@+id/rankinglista"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

</android.support.design.widget.CoordinatorLayout>
活动课

public class RankingActividad extends AppCompatActivity  {


ImageView inicio1;
SearchView sv;
Toolbar toolbar1;
ListView listadatos;
ArrayList<Ranking> Lista;

@Override
public void onBackPressed() {

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ranking_actividad);

    inicio1 = (ImageView) findViewById(R.id.home_rank);
    sv = (SearchView) findViewById(R.id.search);
    toolbar1 = (Toolbar) findViewById(R.id.appbar_rank);
    listadatos = (ListView) findViewById(R.id.rankinglista);
    Lista = new ArrayList<Ranking>();


    Lista.add(new Ranking(1,"Universidad 1","Puntaje","4512",R.drawable.ufps));
    Lista.add(new Ranking(2,"universidad 2","Puntaje","4512",R.drawable.unip));
    Lista.add(new Ranking(3,"universidad 3","Puntaje","4512",R.drawable.ufps));
    Lista.add(new Ranking(4,"universidad 4","Puntaje","4512",R.drawable.ufps));

    final RankingAdaptador rankingAdaptador = new RankingAdaptador(getApplicationContext(),Lista);
    listadatos.setAdapter(rankingAdaptador);



    sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            if(TextUtils.isEmpty(s)){
                rankingAdaptador.filter("");
                listadatos.clearTextFilter();
            }else{
                String texto = s;
                rankingAdaptador.filter(s);
            }
            return true;
        }
    });
公共类RankingActividad扩展了AppCompatActivity{
ImageView inicio1;
SearchView sv;
工具栏工具栏1;
ListView listadatos;
ArrayList Lista;
@凌驾
public void onBackPressed(){
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.ranking_actividad);
inicio1=(ImageView)findViewById(R.id.home\u秩);
sv=(SearchView)findviewbyd(R.id.search);
toolbar1=(Toolbar)findViewById(R.id.appbar\u rank);
listadatos=(ListView)findViewById(R.id.rankinglista);
Lista=新的ArrayList();
列表A.add(新排名(1,“第一大学”、“蓬塔耶”、“4512”、R.drawable.ufps);
列表A.add(新排名(2,“第二大学”、“Puntaje”、“4512”、R.drawable.unip));
列表A.add(新排名(3,“第三大学”、“Puntaje”、“4512”、R.drawable.ufps));
列表A.add(新排名(4,“第四大学”、“蓬塔耶”、“4512”、R.drawable.ufps));
最终RankingAdapter RankingAdapter=新RankingAdapter(getApplicationContext(),Lista);
listadatos.setAdapter(RankingAdapter);
sv.setOnQueryTextListener(新的SearchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串s){
返回false;
}
@凌驾
公共布尔值onQueryTextChange(字符串s){
如果(TextUtils.isEmpty){
RankingAdapter.过滤器(“”);
listadatos.clearTextFilter();
}否则{
字符串texto=s;
RankingAdapter.过滤器;
}
返回true;
}
});
适配器类

public class RankingAdaptador extends  BaseAdapter {

Context context;
LayoutInflater inflater;
List<Ranking> ListaObjetos;
private ArrayList<Ranking> arraylist;


public RankingAdaptador(Context context, List<Ranking> listaObjetos) {
    this.context = context;
    ListaObjetos = listaObjetos;
    inflater = LayoutInflater.from(context);
    this.arraylist = new ArrayList<Ranking>();
    this.arraylist.addAll(ListaObjetos);
}

public class ViewHolder{
    TextView mtitulo,mpuntaje,npuntaje;
    ImageView mimagen;
}

@Override
public int getCount() {
    return ListaObjetos.size();  //retorna la cantidad de elementos de la lista
}

@Override
public Object getItem(int i) {
    return ListaObjetos.get(i);
}

@Override
public long getItemId(int i) {
    return ListaObjetos.get(i).getId();
}

@Override
public View getView(int position, View view, ViewGroup parent) {

    ViewHolder holder;

    if (view==null){
        holder = new ViewHolder();
        view = inflater.inflate(R.layout.ranking_item_lista,null);

        // localizar los items de la lista
        holder.mimagen = view.findViewById(R.id.imagenR);
        holder.mtitulo = view.findViewById(R.id.tv_nombreUR);
        holder.mpuntaje = view.findViewById(R.id.tv_PuntajeR);
        holder.npuntaje = view.findViewById(R.id.tv_NpuntajeR);

        view.setTag(holder);
    }else {
        holder = (ViewHolder)view.getTag();
    }

    // setear los textos de la lista
    holder.mtitulo.setText(ListaObjetos.get(position).getTitulo());
    holder.mpuntaje.setText(ListaObjetos.get(position).getPuntaje());
    holder.npuntaje.setText(ListaObjetos.get(position).getNPuntaje());
    // setear las imagenes de la lista
    holder.mimagen.setImageResource(ListaObjetos.get(position).getImagen());

    return null;
}

public void filter(String charText) {
    charText = charText.toLowerCase(Locale.getDefault());
    ListaObjetos.clear();
    if (charText.length() == 0) {
        ListaObjetos.addAll(arraylist);
    } else {
        for (Ranking wp : arraylist) {
            if (wp.getTitulo().toLowerCase(Locale.getDefault()).contains(charText)) {
                ListaObjetos.add(wp);
            }
        }
    }
    notifyDataSetChanged();
}}
公共类RankingAdapter扩展BaseAdapter{
语境;
充气机;
列表对象;
私有ArrayList ArrayList;
公共RankingAdapter(上下文,列表对象){
this.context=上下文;
ListaObjetos=ListaObjetos;
充气器=充气器。从(上下文);
this.arraylist=新的arraylist();
this.arraylist.addAll(ListaObjetos);
}
公共类视图持有者{
TextView mtitulo、mpuntaje、npuntaje;
图像视图mimagen;
}
@凌驾
public int getCount(){
返回ListaObjetos.size();//returna la cantidad de elementos de la lista
}
@凌驾
公共对象getItem(int i){
返回ListaObjetos.get(i);
}
@凌驾
公共长getItemId(int i){
返回ListaObjetos.get(i.getId();
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
视窗座;
如果(视图==null){
holder=新的ViewHolder();
视图=充气机。充气(R.layout.ranking\u item\u lista,null);
//lista项目的本地化
holder.mimagen=view.findviewbyd(R.id.imagenR);
holder.mtitulo=view.findviewbyd(R.id.tv_nombreUR);
holder.mpuntaje=view.findViewById(R.id.tv_PuntajeR);
holder.npuntaje=view.findViewById(R.id.tv\u NpuntajeR);
视图.设置标签(支架);
}否则{
holder=(ViewHolder)view.getTag();
}
//利斯塔酒店
holder.mtitulo.setText(ListaObjetos.get(position.getitulo());
holder.mpuntaje.setText(ListaObjetos.get(position.getPuntaje());
holder.npuntaje.setText(ListaObjetos.get(position.getNPuntaje());
//利斯塔图片集
setImageResource(ListaObjetos.get(position.getImagen());
返回null;
}
公共空过滤器(字符串图表文本){
charText=charText.toLowerCase(Locale.getDefault());
ListaObjetos.clear();
如果(ChartText.length()==0){
ListaObjetos.addAll(arraylist);
}否则{
对于(排名wp:arraylist){
if(wp.getitulo().toLowerCase(Locale.getDefault()).contains(charText)){
添加(wp);
}
}
}
notifyDataSetChanged();
}}
您从未初始化sv,因此它为空。添加以下内容:

sv = (SearchView) findViewById(R.id.search_tecnico);
public class RankingAdaptador extends  BaseAdapter {

Context context;
LayoutInflater inflater;
List<Ranking> ListaObjetos;
private ArrayList<Ranking> arraylist;


public RankingAdaptador(Context context, List<Ranking> listaObjetos) {
    this.context = context;
    ListaObjetos = listaObjetos;
    inflater = LayoutInflater.from(context);
    this.arraylist = new ArrayList<Ranking>();
    this.arraylist.addAll(ListaObjetos);
}

public class ViewHolder{
    TextView mtitulo,mpuntaje,npuntaje;
    ImageView mimagen;
}

@Override
public int getCount() {
    return ListaObjetos.size();  //retorna la cantidad de elementos de la lista
}

@Override
public Object getItem(int i) {
    return ListaObjetos.get(i);
}

@Override
public long getItemId(int i) {
    return ListaObjetos.get(i).getId();
}

@Override
public View getView(int position, View view, ViewGroup parent) {

    ViewHolder holder;

    if (view==null){
        holder = new ViewHolder();
        view = inflater.inflate(R.layout.ranking_item_lista,null);

        // localizar los items de la lista
        holder.mimagen = view.findViewById(R.id.imagenR);
        holder.mtitulo = view.findViewById(R.id.tv_nombreUR);
        holder.mpuntaje = view.findViewById(R.id.tv_PuntajeR);
        holder.npuntaje = view.findViewById(R.id.tv_NpuntajeR);

        view.setTag(holder);
    }else {
        holder = (ViewHolder)view.getTag();
    }

    // setear los textos de la lista
    holder.mtitulo.setText(ListaObjetos.get(position).getTitulo());
    holder.mpuntaje.setText(ListaObjetos.get(position).getPuntaje());
    holder.npuntaje.setText(ListaObjetos.get(position).getNPuntaje());
    // setear las imagenes de la lista
    holder.mimagen.setImageResource(ListaObjetos.get(position).getImagen());

    return null;
}

public void filter(String charText) {
    charText = charText.toLowerCase(Locale.getDefault());
    ListaObjetos.clear();
    if (charText.length() == 0) {
        ListaObjetos.addAll(arraylist);
    } else {
        for (Ranking wp : arraylist) {
            if (wp.getTitulo().toLowerCase(Locale.getDefault()).contains(charText)) {
                ListaObjetos.add(wp);
            }
        }
    }
    notifyDataSetChanged();
}}
sv.setOnQueryTextListener(new Sear...
sv = (SearchView) findViewById(R.id.search_tecnico);