Domanda

Sono davvero nuovo in Android.Ho questo problema, ho un'attività (Mainactivity) e c'è un navigatoreDrawer, questo cambia due frammenti - AttivitàFincipare e reportfragamenti dei report.

Il problema è con AttivitàFagmenti, i dati non vengono visualizzati.

Ho il mio adattatore pronto e i miei layout pronti e il frammento.Quando debuggerò la mia app, effettivamente porta i dati, ma non viene mostrato.Questo è il mio codice:

ActivitiesAdapter

public class ActivitiesAdapter extends ArrayAdapter<Activities>
{
Context mContext;
int mLayoutResourceId;

public ActivitiesAdapter(Context context, int layoutResourceId)
{
    super(context, layoutResourceId);
    mContext = context;
    mLayoutResourceId = layoutResourceId;
}

public View getView(int position, View convertView, ViewGroup parent)
{
    View row = convertView;
    final Activities currentItem = getItem(position);

    if (row == null) 
    {
        LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
        row = inflater.inflate(mLayoutResourceId, parent, false);
    }

    row.setTag(currentItem);
    final TextView tituloview = (TextView) row.findViewById(R.id.tituloAct);
    tituloview.setText(currentItem.getTitle());
    final TextView descrpview = (TextView) row.findViewById(R.id.descrAct);
    descrpview.setText(currentItem.getDescription());

    return row;
}
}
.

Questo è il mio frammento ActivitiesFragment

public class ActivitiesFragment extends Fragment 
{
protected static final String TAG = "ActivitiesFragmment";
private MobileServiceClient mClient;
private MobileServiceTable<Activities> mActivitiesTable;
private ActivitiesAdapter mAdapter;



@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

}

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


@Override
public void onActivityCreated(Bundle savedInstanceState) 
{
    super.onActivityCreated(savedInstanceState); 
    try 
    {
        mClient = new MobileServiceClient("https://site.azure-mobile.net/",
                "APPLICATIONKEYAPPLICATIONKEY", 
                getActivity().getApplicationContext()).withFilter(new ProgressFilter());
        mActivitiesTable = mClient.getTable(Activities.class);
    } 

    catch (MalformedURLException e) 
    {
        createAndShowDialog(new Exception("There was an error creating the Mobile Service. Verify the URL"), "Error");
    }

  mAdapter = new ActivitiesAdapter(getActivity(), R.layout.act_itemlist);
  ListView listViewToDo = (ListView) getView().findViewById(R.id.activities_fragment_list);
  listViewToDo.setAdapter(mAdapter);
  refreshItemsFromTable();

}




private void createAndShowDialog(Exception exception, String title) 
{
    createAndShowDialog(exception.toString(), title);
}

private void createAndShowDialog(String message, String title) 
{
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity().getApplicationContext());
    builder.setMessage(message);
    builder.setTitle(title);
    builder.create().show();
}





private void refreshItemsFromTable() 
{
    mActivitiesTable.execute(new TableQueryCallback<Activities>() 
    {

        public void onCompleted(List<Activities> result, int count, Exception exception, ServiceFilterResponse response) {
            if (exception == null) {
                mAdapter.clear();

                for (Activities item : result) {
                    mAdapter.add(item);
                    Log.i(TAG, "Titulo: " + item.getTitle());
                }

            } else {
                createAndShowDialog(exception, "Error");
            }
        }
    });
}

}
.

Non so cosa c'è di sbagliato, ma immagino che questo blocco non stia lavorando sul metodo OnActivityCreated:

mAdapter = new ActivitiesAdapter(getActivity(), R.layout.act_itemlist);
  ListView listViewToDo = (ListView) getView().findViewById(R.id.activities_fragment_list);
  listViewToDo.setAdapter(mAdapter);
  refreshItemsFromTable();
.

E qui ci sono i miei layout:

Questo è il layout del mio frigo:

<LinearLayout 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"
android:background="#e1e1e1"
android:orientation="vertical" >

<TextView
    android:id="@+id/tvTituloActs"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/all_activities"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="8dp"
    android:textColor="#009ad2"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<ListView android:id="@+id/activities_fragment_list"
            android:layout_marginTop="8dp"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:background="#FFFFFF"
           android:layout_weight="1"
           tools:listitem="@layout/act_itemlist" 
           android:drawSelectorOnTop="false"/>

 <TextView android:id="@id/android:empty"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:text="No hay datos"/>

</LinearLayout>
.

Questo è il layout act_itemlist.Il layout di fila:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
 android:layout_height="64dp" 
android:orientation="horizontal">
<ImageView
    android:id="@+id/icon"
    android:layout_width="32dp"
    android:layout_height="32dp"
    android:layout_marginLeft="8dp"
    android:gravity="center_vertical"
    android:src="@drawable/done"
    android:layout_gravity="center_vertical"/>

    <LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical" >
        <TextView
        android:id="@+id/tvTituloAct"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="16dp"
        android:textSize="16sp"/>
        <TextView
        android:id="@+id/tvDescrAct"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:text="Description de la actividad" />
    </LinearLayout>

</LinearLayout>
.

Ho davvero bisogno di aiuto con questo!Per favore se qualcuno può vedere qualcosa che mi manca, per favore dimmi!

Grazie !!!!

È stato utile?

Soluzione 2

Alla fine ho risolto il mio problema.Tutto era ok, l'unico dettaglio era il layout.Era sul layout dei frammenti.

 <TextView android:id="@id/android:empty"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:text="No hay datos"/>
.

Questa visione di testo non ha lasciato mostrare i dati così l'ho cancellato e ha funzionato.

Grazie per il tuo aiuto @lazyninja

Altri suggerimenti

Prova a scambiare queste linee:

mAdapter = new ActivitiesAdapter(getActivity(), R.layout.act_itemlist);
  ListView listViewToDo = (ListView) getView().findViewById(R.id.activities_fragment_list);
  refreshItemsFromTable(); // populate first before attaching your adapter
  listViewToDo.setAdapter(mAdapter);
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top