Dienstag, Dezember 10, 2019

android.- widget.RelativeLayout$LayoutParams kann nicht gewirkt werden, um android.- widget.AbsListView$LayoutParams

Folgenden zahlreiche tutorials und Beispiel-Projekte, die ich habe kam bei dem folgenden code sollte das füllen eines ListView mit Zeilen, die mehrere Werte aus einer Zeile-Objekt.

Ein Neuling Programmierer kann ich nicht für das Leben von mir herauszufinden, wo zum Teufel ist mein code nicht funktioniert. Jede Hilfe wäre sehr geschätzt werden!

Wenn ich wichtige Informationen, bitte sagen Sie mir, und ich werde über diese Frage.

Den code, startet es in dem Fragment:

    @Override
    public void onActivityCreated(Bundle savedInstanceState){
        super.onActivityCreated(savedInstanceState);
        Intent i = getActivity().getIntent();

        if (i.getSerializableExtra("ChosenWorkorder") != null){

            Workorder selectedWorkorder = (Workorder) i.getSerializableExtra("ChosenWorkorder");                

            ArticlesListAdapter articlesListAdapter = new ArticlesListAdapter(getActivity(), R.layout.articles_list_row, selectedWorkorder.GetAllLines());

            ListView articlesList = (ListView) getActivity().findViewById(R.id.ArticlesList);
            articlesList.setAdapter(articlesListAdapter);

        }
    }

Benutzerdefinierte ArrayAdapter:

    public class ArticlesListAdapter extends ArrayAdapter<Line> {

    private List<Line> lineList;
    private Context context;

    public ArticlesListAdapter(Context context, int textViewResourceId, List<Line> objects) {
    super(context, textViewResourceId, objects);
        this.lineList = objects;
        this.context = context;
    }

    public int getCount() {
        return lineList.size();
    }

    public Line getItem(int position) {
        return lineList.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    @SuppressLint("ViewHolder") /* Que? */
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.articles_list_row, parent, false);

        TextView articleName = (TextView)     rowView.findViewById(R.id.textArticleName);
        EditText articleAmount = (EditText)     rowView.findViewById(R.id.textArticleAmount);

        Line articleLine = lineList.get(position);

        articleName.setText(articleLine.getLineArticleDescription());
        articleAmount.setText(articleLine.getLineArticleAmount().toString());

        return parent;      
    }
}

Unten ist die LogCat-log zur Klärung (für mich bedeutet es nichts).

E/AndroidRuntime(15941): FATAL EXCEPTION: main
E/AndroidRuntime(15941): Process: be.mabolifting.maboserve, PID: 15941
E/AndroidRuntime(15941): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
E/AndroidRuntime(15941):    at android.widget.ListView.setupChild(ListView.java:1826)
E/AndroidRuntime(15941):    at android.widget.ListView.makeAndAddView(ListView.java:1793)
E/AndroidRuntime(15941):    at android.widget.ListView.fillDown(ListView.java:691)
E/AndroidRuntime(15941):    at android.widget.ListView.fillFromTop(ListView.java:752)
E/AndroidRuntime(15941):    at android.widget.ListView.layoutChildren(ListView.java:1630)
E/AndroidRuntime(15941):    at android.widget.AbsListView.onLayout(AbsListView.java:2087)
E/AndroidRuntime(15941):    at android.view.View.layout(View.java:14860)
E/AndroidRuntime(15941):    at android.view.ViewGroup.layout(ViewGroup.java:4643)
E/AndroidRuntime(15941):    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055)
E/AndroidRuntime(15941):    at android.view.View.layout(View.java:14860)
E/AndroidRuntime(15941):    at android.view.ViewGroup.layout(ViewGroup.java:4643)
E/AndroidRuntime(15941):    at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1594)
E/AndroidRuntime(15941):    at android.view.View.layout(View.java:14860)
E/AndroidRuntime(15941):    at android.view.ViewGroup.layout(ViewGroup.java:4643)
E/AndroidRuntime(15941):    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
E/AndroidRuntime(15941):    at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
E/AndroidRuntime(15941):    at android.view.View.layout(View.java:14860)
E/AndroidRuntime(15941):    at android.view.ViewGroup.layout(ViewGroup.java:4643)
E/AndroidRuntime(15941):    at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:374)
E/AndroidRuntime(15941):    at android.view.View.layout(View.java:14860)
E/AndroidRuntime(15941):    at android.view.ViewGroup.layout(ViewGroup.java:4643)
E/AndroidRuntime(15941):    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)
E/AndroidRuntime(15941):    at android.widget.FrameLayout.onLayout(FrameLayout.java:388)
E/AndroidRuntime(15941):    at android.view.View.layout(View.java:14860)
E/AndroidRuntime(15941):    at android.view.ViewGroup.layout(ViewGroup.java:4643)
E/AndroidRuntime(15941):    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2013)
E/AndroidRuntime(15941):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1770)
E/AndroidRuntime(15941):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1019)
E/AndroidRuntime(15941):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5725)
E/AndroidRuntime(15941):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
E/AndroidRuntime(15941):    at android.view.Choreographer.doCallbacks(Choreographer.java:574)
E/AndroidRuntime(15941):    at android.view.Choreographer.doFrame(Choreographer.java:544)
E/AndroidRuntime(15941):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
E/AndroidRuntime(15941):    at android.os.Handler.handleCallback(Handler.java:733)
E/AndroidRuntime(15941):    at android.os.Handler.dispatchMessage(Handler.java:95)
E/AndroidRuntime(15941):    at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(15941):    at android.app.ActivityThread.main(ActivityThread.java:5086)
E/AndroidRuntime(15941):    at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(15941):    at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(15941):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
E/AndroidRuntime(15941):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
E/AndroidRuntime(15941):    at dalvik.system.NativeStart.main(Native Method)
  • zurück rowView; statt return parent; in der getView() Methode des Adapters.
  • Bitte markieren Sie die laalto Antwort als korrekte Antwort und auch den code so ändern, wie vorgeschlagen von @Blaze tama
InformationsquelleAutor Hetiwos | 2014-11-19

4 Kommentare

  1. 8

    In Ihrem getView() ändern

    return parent;      

    zu

    return rowView;

    getView() zurückkehren sollte, die Zeile anzeigen und nicht die Eltern, wo die Zeilen eingefügt werden in. Der übergeordneten Ansicht werden nur geliefert, als paramteter, so dass anzeigen, die inflation kann sich mit match_parent Größen und so.

  2. 2

    Versuchen Sie dies :

      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    convertView = inflater.inflate(R.layout.articles_list_row, parent, false);
    TextView articleName = (TextView) convertView.findViewById(R.id.textArticleName);
    EditText articleAmount = (EditText) convertView.findViewById(R.id.textArticleAmount);

    Der Punkt ist dont erstellen Sie eine neue View :

    View rowView = inflater.inflate(R.layout.articles_list_row, parent, false);

    Verwenden Sie stattdessen den „bereitgestellten“ View verweisen, die in der Element-Zeile :

    convertView = inflater.inflate(R.layout.articles_list_row, parent, false);

    Und wie @lallto (andere Antwort), sagt, ändern Sie Ihr return zu return convertView; für die Rückgabe des aktuellen Listenelements.

    Für besseres Ergebnis, verwenden Sie ViewHolder Muster :

    http://www.vogella.com/tutorials/AndroidListView/article.html

    • Diese Antwort kann zur Optimierung verwendet werden. Was ist die Antwort, die OP, die eigentliche Frage – classcastexception-Fehler?
    • Vielen Dank für die vielen zusätzlichen Informationen! Ich werde markieren Sie diese als Antwort, denn Sie waren schneller.
    • das ist Arbeit..!!
  3. 2

    ConvertView zurück Referenz anstelle Elternteil in getView und Auch ViewHolder design-Muster zu verbessern ListView-Leistung :

    public View getView(int position, View convertView, ViewGroup parent) {
    Viewholder viewholder;
    if(convertView==null){
    viewholder = new Viewholder();
    convertView = LayoutInflater.from(context).inflate(R.layout.articles_list_row, null);
    viewholder.articleName = (TextView) convertView.findViewById(R.id.textArticleName);
    viewholder.articleAmount = (EditText) convertView.findViewById(R.id.textArticleAmount);
    convertView.setTag(viewholder);
    }else{
    viewholder =(Viewholder) convertView.getTag();
    }
    viewholder.articleName.setText(lineList.get(position).getLineArticleDescription());
    viewholder.articleAmount.setText(lineList.get(position).getLineArticleAmount().toString());
    return convertView;
    }
    class Viewholder {
    TextView articleName;
    EditText articleAmount;
    }
  4. 0

    Sollten Sie die LayoutParams je nach Elternteil, in Ihrem Fall new LinearLayout.LayoutParams sollte neue RelativeLayout.LayoutParams.

Kostenlose Online-Tests

Letzte Fragen

Tun ItemView löst Blase?

Ich habe eine CompositeView für eine Tabelle. Ich habe Trigger-set in der Kind-ItemView für jede Zeile... var TableRow = Marionette.ItemView.extend({ tagName:...

Wie kann ich untersuchen, WCF was 400 bad request über GET?

Die folgenden WCF-endpoint funktioniert gut mit dem WCF test client: AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int...

Bei der Verwendung von UUIDs, sollte ich auch mit AUTO_INCREMENT?

Wir bauen eine neue web-app, die eine offline-iPad - /Android-app-version auf einer Reihe von lokalen Geräten, die Einsätze mit neuen Daten. Als solche benötigen...

Actionscript-Objekt, das verschiedene Eigenschaften

Wie kann ich die Anzahl der Eigenschaften in einer generischen Actionscript-Objekt? (Wie die Array-Länge) InformationsquelleAutor Fragsworth | 2011-01-15

Wie plot mehrere Graphen und nutzen Sie die Navigations-Taste im [matplotlib]

Die neueste version von matplotlib erstellt automatisch Navigations-buttons unter den graph. Aber die Beispiele, die ich finden alles im Internet zeigen, wie erstellen Sie...