Programim dhe zhvillim, javascript, python, php, html

Përshtatësi i personalizuar i Listës nuk funksionon

Po përpiqem të tregoj disa të dhëna në një ListView. Kam krijuar përshtatësin tim, por duket se nuk po funksionon.

Vendosa një pikë pushimi brenda metodës "getView(..)" por nuk e arriti kurrë.

Ndoshta më mungon diçka e thjeshtë, por nuk mund ta kuptoj.

package mpg.scoreControl;

import java.util.ArrayList;

import mpg.playerControl.MPGPlayer;
import mpg.playerControl.MPGPlayerControl;
import multiplayerGameControl.pkg.R;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.SlidingDrawer;
import android.widget.ListView;
import android.widget.TextView;

public class MPGGameScore {

    ArrayList<MPGGameScoreEntry> scores;
    protected class MPGGameScoreEntry{
        public String playerName;
        public int playerScore;
        public MPGGameScoreEntry(String playerName, int playerScore) {
            this.playerName = playerName;
            this.playerScore = playerScore;
        }
    }

    private class GameScoreAdaptor  extends BaseAdapter{


     private LayoutInflater mInflater;
     public GameScoreAdaptor(Context context) {
//        searchArrayList = results;
          mInflater = LayoutInflater.from(context);
         }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 0;
    }


    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }


    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
          ViewHolder holder;
          if (convertView == null) {
           convertView = mInflater.inflate(R.layout.playerscoresrow, null);
           holder = new ViewHolder();
           holder.tvwPlayerName = (TextView) convertView.findViewById(R.id.tvwPlayerName);
           holder.tvwPlayerScore = (TextView) convertView.findViewById(R.id.tvwPlayerScore);

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

          holder.tvwPlayerName.setText(scores.get(position).playerName);
          holder.tvwPlayerScore.setText(scores.get(position).playerScore);

          return convertView;
         }
    }

    static class ViewHolder {
          TextView tvwPlayerName;
          TextView tvwPlayerScore;
    }

    public void showCurrentScores(final  Activity context, SlidingDrawer sd){
        ListView lvwScores = (ListView) sd.findViewById(R.id.lvwScores);


        // Build arraylist with scores.


        scores = new ArrayList<MPGGameScoreEntry>();

        // Now fill it up with rows

        for (MPGPlayer player: MPGPlayerControl.getInstance().players)
            scores.add(new MPGGameScoreEntry(player.playerName,player.playerDetails.playerScore.getScoreInt()));

        lvwScores.setAdapter(new GameScoreAdaptor(context));

    }
}

score_drawer:

<?xml version="1.0" encoding="utf-8"?>

<SlidingDrawer android:id="@+id/slidingDrawer" android:handle="@+id/drawerHandle"
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:content="@+id/contentLayout" android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:layout_alignParentBottom="true" 
                android:visibility="visible">
     <ImageView android:id="@+id/drawerHandle"
                android:src="@drawable/blue_arrow_up_flat"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
    </ImageView>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@+id/contentLayout" android:gravity="center"
                  android:layout_width="fill_parent" android:layout_height="wrap_content">

      <ListView
       android:id="@+id/lvwScores" 
       android:layout_width="fill_parent" android:layout_height="wrap_content"  
       android:divider="#FFFFFF" android:dividerHeight="1dip" 
       android:layout_weight="1"  android:layout_marginBottom="60dip"
       android:footerDividersEnabled="true" android:headerDividersEnabled ="true"/>
    </LinearLayout>
</SlidingDrawer>

rezultati i lojtarëve:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal">

  <TextView android:id="@+id/tvwPlayerName" android:layout_weight="1" android:gravity="left"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"/>
  <TextView android:id="@+id/tvwPlayerScore" android:layout_weight="1" android:gravity="right"
    android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginRight="12sp"
    android:layout_alignParentRight="true"/>
</RelativeLayout>

Përgjigjet:


1

Ju nuk mund të ktheni 0 në metodën getCount() sepse kjo do t'i tregojë përshtatësit tuaj se nuk keni asnjë element në përshtatës:

      @Override
        public int getCount() {
           return  24 ; // I just put a number here,if you plan to use the scores      ArrayList as the data 
// of the adapter you should return here scores.size();     
    }
20.03.2012

2

Përshtatësi juaj duket se bazohet në listën tuaj të rezultateve..kështu që ju bëni diçka si kjo:

@Override
public int getCount() {
    return scores.size();
}


@Override
public Object getItem(int position) {
    scores.get(position);
}


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

BTW: Variablat e anëtarëve (emri i lojtarit dhe rezultati i lojtarit) të klasës Adapter ndoshta nuk janë të nevojshme?!

20.03.2012
Materiale të reja

Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

Faketojeni derisa ta arrini me të dhënat false
A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

Si të përdorni kërkesën API në Python
Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

Një udhëzues hap pas hapi për të zotëruar React
Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

AI dhe Psikologjia — Pjesa 2
Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

Esencialet e punës ditore të kodit tim VS
Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..