Autore Topic: Listview limitata e problema con java  (Letto 315 volte)

Offline Ayo

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
Listview limitata e problema con java
« il: 01 Luglio 2016, 23:23:56 CEST »
0
Salve a tutti, dopo qualche giorno sono riuscito a creare una listview come volevo io.. o quasi.
Il primo problema è che la larghezza è limitata e infatti mi taglia i rettangoli da entrambi i lati
Il secondo problema è che vorrei inserire il codice in un altro file java ma non funziona, funziona soltanto su MainActivity.java
Questo è il codice che dovrei mettere
Codice (Java): [Seleziona]
sv= (SearchView) findViewById(R.id.mSearch);
        lv= (ListView) findViewById(R.id.lv);
       
        adapter=new MyAdapter(this,getMovies());
        lv.setAdapter(adapter);

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

            @Override
            public boolean onQueryTextChange(String query) {
                adapter.getFilter().filter(query);
                return false;
            }
        });
       
       

    }

    private ArrayList<Movie> getMovies() {
        //COLECTION OF CRIME MOVIES
        ArrayList<Movie> movies=new ArrayList<>();


        Movie movie=new Movie("BlacksList",R.drawable.italia);

        //ADD ITR TO COLLECTION
        movies.add(movie);

        movie=new Movie("Fruts",R.drawable.italia);
        movies.add(movie);

        movie=new Movie("Breaking Bad",R.drawable.italia);
        movies.add(movie);

        movie=new Movie("Crisis",R.drawable.italia);
        movies.add(movie);

        movie=new Movie("Ghost Rider",R.drawable.italia);
        movies.add(movie);

        movie=new Movie("Star Wars",R.drawable.italia);
        movies.add(movie);

        movie=new Movie("Shuttle Carrier",R.drawable.italia);
        movies.add(movie);



        movie=new Movie("Men In Black",R.drawable.italia);
        movies.add(movie);

        movie=new Movie("Game Of Thrones",R.drawable.italia);
        movies.add(movie);



        return movies;
    }


}


Questo è il file java in cui dovrei metterlo:
Codice (Java): [Seleziona]
package com.tablayout;


import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


/**
 * A simple {@link Fragment} subclass.
 */

public class HomeFragment extends Fragment {



    public HomeFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View mView = inflater.inflate(R.layout.fragment_home, container, false);
        TextView t;

        t = (TextView) mView.findViewById(R.id.nameTxt);
        Typeface myCustomFont = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Nexa Bold.otf");
        t.setTypeface(myCustomFont);
        // Inflate the layout for this fragment
        return mView;

    }

}

Ogni volta che lo inserisco sotto il codice per il custom font mi da errore la stringa findByViewId e altre stringhe.
Come sistemo?
Grazie mille  ;-)

Offline Carni

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S3
  • Play Store ID:
    R3D5HA
  • Sistema operativo:
    Windows 10
Re:Listview limitata e problema con java
« Risposta #1 il: 03 Luglio 2016, 17:32:01 CEST »
0
Per il findViewById all'interno dei una sottoclasse della classe Fragment devi usare il seguente modo
Codice (Java): [Seleziona]
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        final View view = inflater.inflate(R.layout.fragment_registro, container, false);

        if (view != null) {
            ViewGroup parent = (ViewGroup) view.getParent();
            if (parent != null) {
                parent.removeView(view);
            }
        }
        try {
            editText = (EditText) view.findViewById(R.id.editText)

        } catch (InflateException e) {
            Log.e("", e.toString());
            return null;
        }
        return view;
    }

Offline DCode

  • Utente junior
  • **
  • Post: 69
  • Respect: +20
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 16.04 LTS
Re:Listview limitata e problema con java
« Risposta #2 il: 05 Luglio 2016, 08:43:57 CEST »
0
Il problema del findViewById credo sia stato risolto dal commento precedente.
Per quanto riguarda il
Citazione
la larghezza è limitata e infatti mi taglia i rettangoli da entrambi i lati
cosa vuol dire che è limitata?

Non ti basterebbe allargare la ListView ad esempio mettendo match_parent alla proprietà width?
┻━┻ ︵ヽ(°□°ヽ) Develop w/ ( ( ObjC || Swift ) && Java[ "Android" ] ) (╯°□°)╯︵ ┻━┻

Offline Ayo

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
Re:Listview limitata e problema con java
« Risposta #3 il: 06 Luglio 2016, 13:47:54 CEST »
0
Mi da questo problema irrisolvibile
http://i.imgur.com/IUARL2P.png

Qui sotto il codice:
Codice (Java): [Seleziona]
package com.tablayout;


import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


/**
 * A simple {@link Fragment} subclass.
 */

public class HomeFragment extends Fragment {

    SearchView sv;
    ListView lv;
    MyAdapter adapter;

    public HomeFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_home, container, false);

        if (view != null) {
            ViewGroup parent = (ViewGroup) view.getParent();
            if (parent != null) {
                parent.removeView(view);
            }
        }
        try {
             sv = (SearchView) view.findViewById(R.id.mSearch);
            lv = (ListView) view.findViewById(R.id.lv);

            adapter = new MyAdapter(this, getMovies());
            lv.setAdapter(adapter);

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

                @Override
                public boolean onQueryTextChange(String query) {
                    adapter.getFilter().filter(query);
                    return false;
                }
            });
        } catch (InflateException e) {
            Log.e("", e.toString());
            return null;
        }
        return view;
    }

     private ArrayList<Movie> getMovies() {
                //COLECTION OF CRIME MOVIES
                ArrayList<Movie> movies=new ArrayList<>();


                Movie movie=new Movie("BlacksList",R.drawable.italia);

                //ADD ITR TO COLLECTION
                movies.add(movie);

                movie=new Movie("Fruts",R.drawable.italia);
                movies.add(movie);

                movie=new Movie("Breaking Bad",R.drawable.italia);
                movies.add(movie);

                movie=new Movie("Crisis",R.drawable.italia);
                movies.add(movie);

                movie=new Movie("Ghost Rider",R.drawable.italia);
                movies.add(movie);

                movie=new Movie("Star Wars",R.drawable.italia);
                movies.add(movie);

                movie=new Movie("Shuttle Carrier",R.drawable.italia);
                movies.add(movie);



                movie=new Movie("Men In Black",R.drawable.italia);
                movies.add(movie);

                movie=new Movie("Game Of Thrones",R.drawable.italia);
                movies.add(movie);

                return movies;
     }

}

Invece qui MyAdapter.java
Codice (Java): [Seleziona]
package com.tablayout;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.Toast;

import java.util.ArrayList;

/**
 * Created by Hp on 3/24/2016.
 */

public class MyAdapter extends BaseAdapter implements Filterable {

    Context c;
    ArrayList<Movie> movies;
    LayoutInflater inflater;

    ArrayList<Movie> filterList;
    CustomFilter filter;

    public MyAdapter(Context c, ArrayList<Movie> movies) {
        this.c = c;
        this.movies = movies;
        this.filterList=movies;
    }

    //TOTLA NUM OF MOVIES
    @Override
    public int getCount() {
        return movies.size();
    }

    //GET A SINGLE MOVIE
    @Override
    public Object getItem(int position) {
        return movies.get(position);
    }

    //IDENTITDIER
    @Override
    public long getItemId(int position) {
        return position;
    }

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

        if(inflater==null)
        {
            inflater= (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        //PERFORM INFLATION
        if(convertView==null)
        {
            convertView=inflater.inflate(R.layout.fragment_home,null);
        }

        //BIND DATA TO VIEWS
        MyViewHolder holder=new MyViewHolder(convertView);
        holder.descTxt.setText(movies.get(position).getName());
        holder.img.setImageResource(movies.get(position).getImage());

        holder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(View v) {
                Toast.makeText(c,movies.get(position).getName(),Toast.LENGTH_SHORT).show();
            }
        });

        //RETURN A ROW
        return convertView;
    }

    @Override
    public Filter getFilter() {

        if(filter==null)
        {
            filter=new CustomFilter(filterList,this);
        }

        return filter;
    }
}

Grazie mille  ;-)

Offline DCode

  • Utente junior
  • **
  • Post: 69
  • Respect: +20
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 16.04 LTS
Re:Listview limitata e problema con java
« Risposta #4 il: 06 Luglio 2016, 14:03:12 CEST »
0
Non sono sicuro ma al posto di this metti
Codice (Java): [Seleziona]
getContext()oppure
Codice (Java): [Seleziona]
getActivity()
┻━┻ ︵ヽ(°□°ヽ) Develop w/ ( ( ObjC || Swift ) && Java[ "Android" ] ) (╯°□°)╯︵ ┻━┻

Offline Ayo

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
Re:Listview limitata e problema con java
« Risposta #5 il: 06 Luglio 2016, 17:02:12 CEST »
0
Provato e funziona in entrambi i casi!
Ma si è presentato un altro problema  :'(
Mi visualizza la ListView al di sopra dell'action bar e dei tabs
Così: http://i.imgur.com/XTjIFPa.png

Questo è il codice in cui tengo la listview e i componenti
P.S: Non è la activity_main.xml
Codice (XML): [Seleziona]
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   tools:context="com.tablayout.HomeFragment">

    <!-- TODO: Update blank fragment layout -->

    <android.support.v7.widget.SearchView
   android:id="@+id/mSearch"
   android:layout_width="match_parent"
   android:layout_height="30dp"

   app:defaultQueryHint="Search.."

   />

    <ListView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/lv"
       android:layout_below="@+id/mSearch" />

    <RelativeLayout
       android:layout_width="689px"
       android:layout_height="278px"
       android:layout_alignParentLeft="true"
       android:layout_gravity="center"
       android:layout_marginLeft="0dp"
       android:background="@drawable/rectangle"
       android:orientation="vertical">

        <ImageView
           android:id="@+id/barra"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_alignParentLeft="true"
           android:layout_marginRight="338dp"
           android:layout_marginBottom="7px"
           android:src="@drawable/barra" />

        <ImageView
           android:id="@+id/viewertv"
           android:layout_width="65dp"
           android:layout_height="match_parent"
           android:layout_alignParentLeft="true"
           android:layout_marginLeft="13dp"
           android:layout_marginTop="45dp"
           android:src="@drawable/viewer" />






        <ImageView
           android:id="@+id/movieImage"
           android:layout_width="42dp"
           android:layout_height="42dp"
           android:layout_alignParentLeft="true"
           android:layout_marginLeft="6dp"
           android:layout_marginTop="4dp"
           android:src="@drawable/italia" />


        <TextView
           android:id="@+id/nameTxt"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_marginLeft="35dp"
           android:gravity="top|start"
           android:padding="15dp"
           android:text="Italian Channels"
           android:textColor="#FFFFFF"
           android:textSize="8pt" />

        <TextView
           android:id="@+id/descTxt"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_marginRight="140dp"
           android:gravity="center"
           android:layout_marginTop="63dp"
           android:text="Rai 1"
           android:textColor="#FFFFFF"
           android:textSize="8pt" />
        />

        <TextView
           android:id="@+id/posTxt"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_marginRight="137dp"
           android:gravity="center"
           android:layout_marginTop="86dp"
           android:text="ONLINE"
           android:textColor="#FFFFFF"
           android:textSize="4pt" />

        <CheckBox
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:id="@+id/chk"
           android:layout_alignParentRight="true"
           />

    </RelativeLayout>


</FrameLayout>

Grazie come sempre  ;-)

Offline DCode

  • Utente junior
  • **
  • Post: 69
  • Respect: +20
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 16.04 LTS
Re:Listview limitata e problema con java
« Risposta #6 il: 07 Luglio 2016, 08:33:48 CEST »
0
Dato che credo che questo XML sia chiamato in un fragment, probabilmente sbagli a specificare il layout nell'inflate.
┻━┻ ︵ヽ(°□°ヽ) Develop w/ ( ( ObjC || Swift ) && Java[ "Android" ] ) (╯°□°)╯︵ ┻━┻