2017-02-02 6 views
2

Ok, also habe ich vor kurzem an einem kleinen Projekt für meine persönlichen Vorlieben gearbeitet, und auf dem Weg habe ich ein wenig Code implementiert, der nicht funktioniert hat. Also, wie es die meisten Leute tun würden, habe ich es gelöscht. Aber später erlebte ich den gleichen Fehler, den der Code-Prior verursachte, aber als ich nachschaute, war es nicht da! Ich bin vielleicht einfach dumm, blind oder vielleicht beides, aber ich bekomme immer nur eine Karte in der recyclerView, um aufzutauchen! Fühlen Sie sich frei, mich dumm zu nennen, wenn Sie eine Antwort finden können, und ich danke Ihnen sehr im Voraus.Recycler Ansicht zeigt nur ein Item

P.S. Ja, ich bin sehr neu in Java, also erinnere dich daran, bevor du dich entschließt, mich zu braten.

Mein MainActivity:

package com.example.whateverthefuckyouwant; 
 

 
//Imports, in case you couldn't tell 
 

 
import android.net.Uri; 
 
import android.support.v7.app.AppCompatActivity; 
 
import android.os.Bundle; 
 
import android.support.v7.widget.LinearLayoutManager; 
 
import android.support.v7.widget.RecyclerView; 
 
import android.support.v7.widget.helper.ItemTouchHelper; 
 
import android.util.Log; 
 
import android.widget.TextView; 
 
import android.widget.Toast; 
 

 
import com.google.android.gms.common.api.GoogleApiClient; 
 

 
import java.lang.reflect.Array; 
 
import java.util.ArrayList; 
 
import java.util.Arrays; 
 

 
import com.google.android.gms.common.ConnectionResult; 
 
import com.google.android.gms.common.GoogleApiAvailability; 
 
import com.google.api.client.extensions.android.http.AndroidHttp; 
 
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential; 
 
import com.google.api.client.googleapis.extensions.android.gms.auth.GooglePlayServicesAvailabilityIOException; 
 
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException; 
 

 
import com.google.api.client.http.HttpTransport; 
 
import com.google.api.client.json.JsonFactory; 
 
import com.google.api.client.json.jackson2.JacksonFactory; 
 
import com.google.api.client.util.ExponentialBackOff; 
 

 
import com.google.api.services.sheets.v4.SheetsScopes; 
 

 
import com.google.api.services.sheets.v4.model.*; 
 

 
import android.Manifest; 
 
import android.accounts.AccountManager; 
 
import android.app.Activity; 
 
import android.app.Dialog; 
 
import android.app.ProgressDialog; 
 
import android.content.Context; 
 
import android.content.Intent; 
 
import android.content.SharedPreferences; 
 
import android.net.ConnectivityManager; 
 
import android.net.NetworkInfo; 
 
import android.os.AsyncTask; 
 
import android.os.Bundle; 
 
import android.support.annotation.NonNull; 
 
import android.text.TextUtils; 
 
import android.text.method.ScrollingMovementMethod; 
 
import android.view.View; 
 
import android.view.ViewGroup; 
 
import android.widget.Button; 
 
import android.widget.LinearLayout; 
 
import android.widget.TextView; 
 

 
import java.io.IOException; 
 
import java.util.ArrayList; 
 
import java.util.Arrays; 
 
import java.util.Collections; 
 
import java.util.List; 
 
import java.util.Random; 
 

 
import pub.devrel.easypermissions.AfterPermissionGranted; 
 
import pub.devrel.easypermissions.EasyPermissions; 
 

 
public class MainActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks { 
 
    GoogleAccountCredential mCredential; 
 
    ProgressDialog mProgress; 
 

 
    static final int REQUEST_ACCOUNT_PICKER = 1000; 
 
    static final int REQUEST_AUTHORIZATION = 1001; 
 
    static final int REQUEST_GOOGLE_PLAY_SERVICES = 1002; 
 
    static final int REQUEST_PERMISSION_GET_ACCOUNTS = 1003; 
 

 
    private static final String PREF_ACCOUNT_NAME = "accountName"; 
 
    private static final String[] SCOPES = {SheetsScopes.SPREADSHEETS_READONLY }; 
 

 
    private RecyclerView mRecyclerView; 
 
    private RecyclerView.Adapter mAdapter; 
 
    private RecyclerView.LayoutManager mLayoutManager; 
 

 

 
    //ArrayList holding data from the Google Sheets API 
 
    ArrayList<Team> teamAF; 
 
    //Number of cards that the user has cycled through 
 
    int cardNumber = 1; 
 

 
    //Integers for direction of swipe. 8 = Right, 4 = Left 
 
    int RIGHT = 8; 
 
    int LEFT = 4; 
 

 
    boolean first = true; 
 

 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 

 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 

 

 
     // Initialize credentials and service object. 
 
     mCredential = GoogleAccountCredential.usingOAuth2(
 
       getApplicationContext(), Arrays.asList(SCOPES)) 
 
       .setBackOff(new ExponentialBackOff()); 
 

 
     //Create Recycler View 
 
     mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view); 
 

 
     //Specific size of Cards 
 
     mRecyclerView.setHasFixedSize(true); 
 

 
     //Design choices using LinearLayoutManager 
 
     mLayoutManager = new LinearLayoutManager(this); 
 
     mRecyclerView.setLayoutManager(mLayoutManager); 
 

 
     //Create teamAF array list 
 
     teamAF = new ArrayList<>(); 
 
     //Ads another card, so as to make an infinite number of cards 
 
     teamAF.add(new Team()); 
 

 
     //Creating and setting mAdapter with teamAF 
 
     mAdapter = new MyAdapter(teamAF); 
 
     mRecyclerView.setAdapter(mAdapter); 
 

 
     //Swipe code for cardView 
 
     ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) { 
 
      //Don't know what onMove does 
 
      @Override 
 
      public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { 
 
       Toast.makeText(MainActivity.this, "on Move", Toast.LENGTH_SHORT).show(); 
 
       return false; 
 
      } 
 

 
      // Direction 4 = left, Direction 8 = right 
 
      @Override 
 
      public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) { 
 
       //Prints swipeDir integer into console 
 
       Log.e(".", swipeDir + ""); 
 
       //Sets variables to null, so they can be reset later 
 
       Team t = null; 
 
       //String s is reset to a string of code that enables it to check the string in the API with your answer. 
 
       String s = ""; 
 

 
       //Code for answer. swipeDir == Left(4); Right(8). 
 
       if (swipeDir == LEFT) { 
 
        //Sets s 
 
        s = ((TextView) viewHolder.itemView.findViewById(R.id.left)).getText().toString(); 
 
       } else if (swipeDir == RIGHT) { 
 
        //checks the answer swiped with he API 
 
        s = ((TextView) viewHolder.itemView.findViewById(R.id.right)).getText().toString(); 
 

 
       } 
 

 
       //Removes card from array 
 
       t = teamAF.remove(mRecyclerView.getChildAdapterPosition(viewHolder.itemView)); 
 
       //Adds some nice animation effect 
 
       mAdapter.notifyItemRemoved(mRecyclerView.getChildAdapterPosition(viewHolder.itemView)); 
 

 
       //Sends a toast message saying "correct" or "incorrect" 
 
       if(t.checkAnswer(s)) { 
 
        Toast.makeText(MainActivity.this, "Correct!", Toast.LENGTH_SHORT).show(); 
 
       } else { 
 
        Toast.makeText(MainActivity.this, "Incorrect!", Toast.LENGTH_SHORT).show(); 
 
       } 
 

 
       if(first) { 
 
        //This make the recyclerView shuffle 
 
        Collections.shuffle(teamAF, new Random()); 
 
        first = false; 
 
       } 
 

 
       //Adding one, so the cards can go on forever 
 
       cardNumber++; 
 

 
       //Calls the methods 
 
       mAdapter = new MyAdapter(teamAF); 
 
       mRecyclerView.setAdapter(mAdapter); 
 

 
       //This is a 'benchmark' type 'achievement' 
 
       if (cardNumber == 50) { 
 
        Toast.makeText(getApplicationContext(), "You Reached 50 Points Without Losing! You're Doing Great!", Toast.LENGTH_SHORT).show(); 
 
       } else if (cardNumber == 100) { 
 
        Toast.makeText(getApplicationContext(), "You Reached 100 Points Without Losing! You're A Genius!", Toast.LENGTH_SHORT).show(); 
 
       } 
 

 
      } 
 

 
     }; 
 

 
     //Allows the swiping inside the recyclerView 
 
     ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback); 
 
     itemTouchHelper.attachToRecyclerView(mRecyclerView); 
 

 
     //Calls the google API 
 
     mProgress = new ProgressDialog(this); 
 
     mProgress.setMessage("Loading..."); 
 
     getResultsFromApi(); 
 
    } 
 

 

 

 
    //The green was commented from the site 
 

 
    /** 
 
    * Attempt to call the API, after verifying that all the preconditions are 
 
    * satisfied. The preconditions are: Google Play Services installed, an 
 
    * account was selected and the device currently has online access. If any 
 
    * of the preconditions are not satisfied, the app will prompt the user as 
 
    * appropriate. 
 
    */ 
 
    private void getResultsFromApi() { 
 

 
     if (! isGooglePlayServicesAvailable()) { 
 
      acquireGooglePlayServices(); 
 
     } else if (mCredential.getSelectedAccountName() == null) { 
 
      chooseAccount(); 
 
     } else if (! isDeviceOnline()) { 
 
      System.out.println("No network connection available."); 
 
     } else { 
 
      new MakeRequestTask(mCredential).execute(); 
 
     } 
 
    } 
 

 
    /** 
 
    * Attempts to set the account used with the API credentials. If an account 
 
    * name was previously saved it will use that one; otherwise an account 
 
    * picker dialog will be shown to the user. Note that the setting the 
 
    * account to use with the credentials object requires the app to have the 
 
    * GET_ACCOUNTS permission, which is requested here if it is not already 
 
    * present. The AfterPermissionGranted annotation indicates that this 
 
    * function will be rerun automatically whenever the GET_ACCOUNTS permission 
 
    * is granted. 
 
    */ 
 
    @AfterPermissionGranted(REQUEST_PERMISSION_GET_ACCOUNTS) 
 
    private void chooseAccount() { 
 
     if (EasyPermissions.hasPermissions(
 
       this, Manifest.permission.GET_ACCOUNTS)) { 
 
      String accountName = getPreferences(Context.MODE_PRIVATE) 
 
        .getString(PREF_ACCOUNT_NAME, null); 
 
      if (accountName != null) { 
 
       mCredential.setSelectedAccountName(accountName); 
 
       getResultsFromApi(); 
 
      } else { 
 
       // Start a dialog from which the user can choose an account 
 
       startActivityForResult(
 
         mCredential.newChooseAccountIntent(), 
 
         REQUEST_ACCOUNT_PICKER); 
 
      } 
 
     } else { 
 
      // Request the GET_ACCOUNTS permission via a user dialog 
 
      EasyPermissions.requestPermissions(
 
        this, 
 
        "This app needs to access your Google account (via Contacts).", 
 
        REQUEST_PERMISSION_GET_ACCOUNTS, 
 
        Manifest.permission.GET_ACCOUNTS); 
 
     } 
 
    } 
 

 
    /** 
 
    * Called when an activity launched here (specifically, AccountPicker 
 
    * and authorization) exits, giving you the requestCode you started it with, 
 
    * the resultCode it returned, and any additional data from it. 
 
    * @param requestCode code indicating which activity result is incoming. 
 
    * @param resultCode code indicating the result of the incoming 
 
    *  activity result. 
 
    * @param data Intent (containing result data) returned by incoming 
 
    *  activity result. 
 
    */ 
 
    @Override 
 
    protected void onActivityResult(
 
      int requestCode, int resultCode, Intent data) { 
 
     super.onActivityResult(requestCode, resultCode, data); 
 
     switch(requestCode) { 
 
      case REQUEST_GOOGLE_PLAY_SERVICES: 
 
       if (resultCode != RESULT_OK) { 
 

 
       } else { 
 
        getResultsFromApi(); 
 
       } 
 
       break; 
 
      case REQUEST_ACCOUNT_PICKER: 
 
       if (resultCode == RESULT_OK && data != null && 
 
         data.getExtras() != null) { 
 
        String accountName = 
 
          data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME); 
 
        if (accountName != null) { 
 
         SharedPreferences settings = 
 
           getPreferences(Context.MODE_PRIVATE); 
 
         SharedPreferences.Editor editor = settings.edit(); 
 
         editor.putString(PREF_ACCOUNT_NAME, accountName); 
 
         editor.apply(); 
 
         mCredential.setSelectedAccountName(accountName); 
 
         getResultsFromApi(); 
 
        } 
 
       } 
 
       break; 
 
      case REQUEST_AUTHORIZATION: 
 
       if (resultCode == RESULT_OK) { 
 
        getResultsFromApi(); 
 
       } 
 
       break; 
 
     } 
 
    } 
 

 
    /** 
 
    * Respond to requests for permissions at runtime for API 23 and above. 
 
    * @param requestCode The request code passed in 
 
    *  requestPermissions(android.app.Activity, String, int, String[]) 
 
    * @param permissions The requested permissions. Never null. 
 
    * @param grantResults The grant results for the corresponding permissions 
 
    *  which is either PERMISSION_GRANTED or PERMISSION_DENIED. Never null. 
 
    */ 
 
    @Override 
 
    public void onRequestPermissionsResult(int requestCode, 
 
              @NonNull String[] permissions, 
 
              @NonNull int[] grantResults) { 
 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
 
     EasyPermissions.onRequestPermissionsResult(
 
       requestCode, permissions, grantResults, this); 
 
    } 
 

 
    /** 
 
    * Callback for when a permission is granted using the EasyPermissions 
 
    * library. 
 
    * @param requestCode The request code associated with the requested 
 
    *   permission 
 
    * @param list The requested permission list. Never null. 
 
    */ 
 
    @Override 
 
    public void onPermissionsGranted(int requestCode, List<String> list) { 
 
     // Do nothing. 
 
    } 
 

 
    /** 
 
    * Callback for when a permission is denied using the EasyPermissions 
 
    * library. 
 
    * @param requestCode The request code associated with the requested 
 
    *   permission 
 
    * @param list The requested permission list. Never null. 
 
    */ 
 
    @Override 
 
    public void onPermissionsDenied(int requestCode, List<String> list) { 
 
     // Do nothing. 
 
    } 
 

 
    /** 
 
    * Checks whether the device currently has a network connection. 
 
    * @return true if the device has a network connection, false otherwise. 
 
    */ 
 
    private boolean isDeviceOnline() { 
 
     ConnectivityManager connMgr = 
 
       (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
 
     NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); 
 
     return (networkInfo != null && networkInfo.isConnected()); 
 
    } 
 

 
    /** 
 
    * Check that Google Play services APK is installed and up to date. 
 
    * @return true if Google Play Services is available and up to 
 
    *  date on this device; false otherwise. 
 
    */ 
 
    private boolean isGooglePlayServicesAvailable() { 
 
     GoogleApiAvailability apiAvailability = 
 
       GoogleApiAvailability.getInstance(); 
 
     final int connectionStatusCode = 
 
       apiAvailability.isGooglePlayServicesAvailable(this); 
 
     return connectionStatusCode == ConnectionResult.SUCCESS; 
 
    } 
 

 
    /** 
 
    * Attempt to resolve a missing, out-of-date, invalid or disabled Google 
 
    * Play Services installation via a user dialog, if possible. 
 
    */ 
 
    private void acquireGooglePlayServices() { 
 
     GoogleApiAvailability apiAvailability = 
 
       GoogleApiAvailability.getInstance(); 
 
     final int connectionStatusCode = 
 
       apiAvailability.isGooglePlayServicesAvailable(this); 
 
     if (apiAvailability.isUserResolvableError(connectionStatusCode)) { 
 
      showGooglePlayServicesAvailabilityErrorDialog(connectionStatusCode); 
 
     } 
 
    } 
 

 

 
    /** 
 
    * Display an error dialog showing that Google Play Services is missing 
 
    * or out of date. 
 
    * @param connectionStatusCode code describing the presence (or lack of) 
 
    *  Google Play Services on this device. 
 
    */ 
 
    void showGooglePlayServicesAvailabilityErrorDialog(
 
      final int connectionStatusCode) { 
 
     GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance(); 
 
     Dialog dialog = apiAvailability.getErrorDialog(
 
       MainActivity.this, 
 
       connectionStatusCode, 
 
       REQUEST_GOOGLE_PLAY_SERVICES); 
 
     dialog.show(); 
 
    } 
 

 
    /** 
 
    * An asynchronous task that handles the Google Sheets API call. 
 
    * Placing the API calls in their own task ensures the UI stays responsive. 
 
    */ 
 
    private class MakeRequestTask extends AsyncTask<Void, Void, List<String>> { 
 
     private com.google.api.services.sheets.v4.Sheets mService = null; 
 
     private Exception mLastError = null; 
 

 
     MakeRequestTask(GoogleAccountCredential credential) { 
 
      HttpTransport transport = AndroidHttp.newCompatibleTransport(); 
 
      JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 
 
      mService = new com.google.api.services.sheets.v4.Sheets.Builder(
 
        transport, jsonFactory, credential) 
 
        .setApplicationName("Google Sheets API Android Quickstart") 
 
        .build(); 
 
     } 
 

 
     /** 
 
     * Background task to call Google Sheets API. 
 
     * @param params no parameters needed for this task. 
 
     */ 
 
     @Override 
 
     protected List<String> doInBackground(Void... params) { 
 
      try { 
 
       return getDataFromApi(); 
 
      } catch (Exception e) { 
 
       mLastError = e; 
 
       cancel(true); 
 
       return null; 
 
      } 
 
     } 
 

 
     /** 
 
     * Fetch a list of names and majors of students in a sample spreadsheet: 
 
     * https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit 
 
     * @return List of names and majors 
 
     */ 
 
     private List<String> getDataFromApi() throws IOException { 
 
      String spreadsheetId = "1KlflsDsBn0lhGT87OuRuy_RGOuBP2jBU5zpqn_UIYT0"; 
 
      String range = "Sheet1!A2:B"; 
 
      List<String> results = new ArrayList<String>(); 
 
      ValueRange response = this.mService.spreadsheets().values() 
 
        .get(spreadsheetId, range) 
 
        .execute(); 
 
      List<List<Object>> values = response.getValues(); 
 
      for (List row : values) { 
 
       //Obtains the row from the Google Sheet 
 
       teamAF.add(new Team(row.get(0).toString(), row.get(1).toString())); 
 
      } 
 
      //Shuffle the cards with the data on them. 
 
      Collections.shuffle(teamAF, new Random()); 
 

 
      /*for(String s : results) { 
 
       Log.e("HERE", s); 
 
      }*/ 
 

 
      return results; 
 
     } 
 

 
     @Override 
 
     protected void onPreExecute() { 
 
      //mOutputText.setText(""); 
 
      mProgress.show(); 
 
     } 
 

 
     @Override 
 
     protected void onPostExecute(List<String> output) { 
 
      mProgress.hide(); 
 
      if (output == null || output.size() == 0) { 
 
       //mOutputText.setText("No results returned."); 
 
      } else { 
 
       output.add(0, "Data retrieved using the Google Sheets API:"); 
 
       //mOutputText.setText(TextUtils.join("\n", output)); 
 
      } 
 
     } 
 

 
     @Override 
 
     protected void onCancelled() { 
 
      mProgress.hide(); 
 
      if (mLastError != null) { 
 
       if (mLastError instanceof GooglePlayServicesAvailabilityIOException) { 
 
        showGooglePlayServicesAvailabilityErrorDialog(
 
          ((GooglePlayServicesAvailabilityIOException) mLastError) 
 
            .getConnectionStatusCode()); 
 
       } else if (mLastError instanceof UserRecoverableAuthIOException) { 
 
        startActivityForResult(
 
          ((UserRecoverableAuthIOException) mLastError).getIntent(), 
 
          MainActivity.REQUEST_AUTHORIZATION); 
 
       } else { 
 
        //mOutputText.setText("The following error occurred:\n" 
 
          //+ mLastError.getMessage()); 
 
       } 
 
      } else { 
 
       //mOutputText.setText("Request cancelled."); 
 
      } 
 
     } 
 
    } 
 

 
}

Mein Adapter:

package com.example.whateverthefuckyouwant; 
 

 
import android.support.v7.widget.RecyclerView; 
 
import android.view.LayoutInflater; 
 
import android.view.View; 
 
import android.view.ViewGroup; 
 
import android.widget.TextView; 
 

 
import java.util.ArrayList; 
 
import java.util.Random; 
 

 
/** 
 
* Created by ebuttikofer20 on 1/20/17. 
 
*/ 
 

 
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { 
 
    private ArrayList<Team> mDataset; 
 

 
    // Provide a reference to the views for each data item 
 
    // Complex data items may need more than one view per item, and 
 
    // you provide access to all the views for a data item in a view holder 
 
    public static class ViewHolder extends RecyclerView.ViewHolder { 
 
     // each data item is just a string in this case 
 
     public TextView mTextView; 
 
     public TextView left; 
 
     public TextView right; 
 

 
     public ViewHolder(View v) { 
 
      super(v); 
 
      mTextView = (TextView) v.findViewById(R.id.info_text); 
 
      left = (TextView) v.findViewById(R.id.left); 
 
      right = (TextView) v.findViewById(R.id.right); 
 

 
     } 
 
    } 
 

 

 
    // Provide a suitable constructor (depends on the kind of dataset) 
 
    public MyAdapter(ArrayList<Team> myDataset) { 
 
     mDataset = myDataset; 
 
    } 
 
    // Create new views (invoked by the layout manager) 
 
    @Override 
 
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, 
 
                int viewType) { 
 
     // create a new view 
 
     View v = LayoutInflater.from(parent.getContext()) 
 
       .inflate(R.layout.my_text_view, parent, false); 
 
     // set the view's size, margins, paddings and layout parameters 
 
     ViewHolder vh = new ViewHolder(v); 
 
     return vh; 
 

 
    } 
 

 
    // Replace the contents of a view (invoked by the layout manager) 
 
    @Override 
 
    public void onBindViewHolder(ViewHolder holder, int position) { 
 
     // - get element from your data at this position 
 
     // - replace the contents of the view with that element 
 

 
     holder.mTextView.setText(mDataset.get(position).getTeamName()); 
 
     Random gen = new Random(); 
 

 
     if(gen.nextBoolean()) { 
 
      lefter = mDataset.get(position).getTeamNumber(); 
 
      righter = mDataset.get(gen.nextInt(mDataset.size())).getTeamNumber(); 
 
      holder.left.setText(lefter); 
 
      holder.right.setText(righter); 
 
     } else { 
 
      righter = mDataset.get(
 
        position).getTeamNumber(); 
 
      lefter = mDataset.get(gen.nextInt(mDataset.size())).getTeamNumber(); 
 
      holder.right.setText(righter); 
 
      holder.left.setText(lefter); 
 

 
     } 
 

 
    } 
 

 
    String righter; 
 
    String lefter; 
 

 
    public String getLeft() { 
 
     return lefter; 
 
    } 
 

 
    public String getRighter() { 
 
     return righter; 
 
    } 
 

 
    // Return the size of your dataset (invoked by the layout manager) 
 
    @Override 
 
    public int getItemCount() { 
 
     return mDataset.size(); 
 
    } 
 
}

+0

fest. Fügen Sie auch Ihren my_text_view-Code hinzu – nitinkumarp

Antwort

0

Legen Sie die Höhe Ihres übergeordneten Layouts in Ihrer R.layout.my_text_view-Datei auf wrap_content

Verwandte Themen