Probleme mit Listview

  • Hallo liebe Community,
    ich habe angefangen eine eigene App zu basteln, leider habe ich keine wirklichen Javakenntnisse.
    Ich habe hier meine ListView, wenn ich auf eine Zeile drauf klick, soll eine neue Activity aufgehen, wo ich einen Text , bzw. ein WebView einfügen kann.
    Das habe ich bisher:


    MainActivity.java


    package com.myownapp;


    import java.util.ArrayList;
    import java.util.List;


    import android.annotation.SuppressLint;
    import android.app.ActionBar;
    import android.app.ListFragment;
    import android.content.Context;
    import android.os.Bundle;


    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.NavUtils;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;


    public class MainActivity extends FragmentActivity implements
    ActionBar.OnNavigationListener {


    /**
    * The serialization (saved instance state) Bundle key representing the
    * current dropdown position.
    */
    private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";





    private ListView getListView() {
    // TODO Auto-generated method stub
    return null;
    }




    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    List valueList = new ArrayList<String>();



    // Set up the action bar to show a dropdown list.
    final ActionBar actionBar = getActionBar();
    actionBar.setDisplayShowTitleEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);


    // Set up the dropdown list navigation in the action bar.
    actionBar.setListNavigationCallbacks(
    // Specify a SpinnerAdapter to populate the dropdown list.
    new ArrayAdapter<String>(actionBar.getThemedContext(),
    android.R.layout.simple_list_item_1,
    android.R.id.text1, new String[] {
    getString(R.string.title_section1),
    getString(R.string.title_section2),
    getString(R.string.title_section3),
    getString(R.string.title_section4),
    getString(R.string.title_section5),
    getString(R.string.title_section6),
    getString(R.string.title_section7), }), this);
    }


    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
    // Restore the previously serialized current dropdown position.
    if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) {
    getActionBar().setSelectedNavigationItem(
    savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM));
    }
    }


    @Override
    public void onSaveInstanceState(Bundle outState) {
    // Serialize the current dropdown position.
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar()
    .getSelectedNavigationIndex());
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
    }


    @Override
    public boolean onNavigationItemSelected(int position, long id) {
    // When the given dropdown item is selected, show its contents in the
    // container view.
    Fragment fragment = new DummySectionFragment();
    Bundle args = new Bundle();
    args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1);
    fragment.setArguments(args);
    getSupportFragmentManager().beginTransaction()
    .replace(R.id.container, fragment).commit();
    return true;
    }


    /**
    * A dummy fragment representing a section of the app, but that simply
    * displays dummy text.
    */
    public static class DummySectionFragment extends Fragment {
    /**
    * The fragment argument representing the section number for this
    * fragment.
    */
    public static final String ARG_SECTION_NUMBER = "section_number";


    public DummySectionFragment() {
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main_dummy,
    container, false);
    TextView dummyTextView = (TextView) rootView
    .findViewById(R.id.section_label);
    dummyTextView.setText(Integer.toString(getArguments().getInt(
    ARG_SECTION_NUMBER)));
    return rootView;
    }
    }


    }






    AndroidManifest:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.kcwertheim"
    android:versionCode="1"
    android:versionName="1.0" >


    <uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="17" />


    <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
    android:name="com.kcwertheim.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />


    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    </application>


    </manifest>




    Was muss ich ändern??
    Bisher kommt immer eine Zahl, hier möchte ich aber eine art Worddokument(oder PDF) einfügen, also einen Text mit Bildern, den ich jederzeit einfach austauschen kann.


    Danke für eure Hilfe

  • Moin,


    da hast Du aber mal ein schönes Sample gepostet. Vom aktuellen Android Studio, nehme ich an.


    Was muss ich ändern?


    Och, so ziemlich alles ab

    Java
    @Override
    public boolean onNavigationItemSelected(int position, long id) {


    Welche Dokumentationen/Bücher/Videos nutzt Du zum Lernen?
    Was hast Du bisher versucht um Dein Ziel zu erreichen?


    Direkt nach dem automatisch generierten Samplecode um Hilfe zu fragen ist ähnlich produktiv wie direkt nach dem Auspacken des IKEA Schrankes die Hotline anzurufen.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Ich habe die Bücher Android App entwickeln für dummies und Android 4: Apps entwickeln mit dem SDK


    Ich habe versucht eine Lösung für mein Problem bei android.developer.com zu finden und hab mir ein paar Tutorials von iBasicTutorials auf Youtube angesehen.
    Zunächst ist es mein ziel, dass wenn man auf ein Item klickt eine neue Activity aufgeht.

  • Dafür hast Du schon den vollkommen falschen Ansatz gewählt.
    Activities sind so alt und von Nachteilen behaftet, dass man sie einfach wo es geht wegfallen lassen sollte.


    Genau das macht Android Studio. Anstatt mit Activities herumzufrickeln nutzt es Fragments.
    Fragments sind so etwas Ähnliches wie Activities, nur dass sie nicht allein existieren können. Dafür kannst Du aber ein und dasselbe Fragment an unterschiedlichen Stellen in der App problemlos weiter benutzen. Und deine Navigation kannst Du auch an einer Stelle vorhalten und brauchst sie nicht Activity-übergreifend gestalten. (Das macht echt keinen Spaß.)


    Bei dem Beispielprojekt kannst Du ja schon sehen, wie das mit den Fragments geht.
    Es wird ein DummyFragment erstellt, sobald Du auf einen Eintrag in der Liste tippst.
    Die Position des Eintrags wird vor der Erstellung an das DummyFragment übergeben und das DummyFragment richtet dementsprechend dann sein Textfeld ein.


    Du siehst also nicht einfach nur 'eine Zahl', sondern immer die Position des gewählten Eintrags deiner Navigationsliste.
    Wenn Du jetzt also in Deinem Fragment ein PDF anzeigen willst, kannst Du an Hand der internen Datenstruktur beispielsweise herausfinden, wie der Dateiname zum PDF an der berührten Position der Liste ist und kannst diese dann an das Fragment übergeben.


    Das Fragment braucht dann nur noch das PDF hinter dem übergebenen Dateinamen öffnen und anzeigen.


    Insofern mein Tipp: lies Dich in Fragments ein. :)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Dann zeig doch mal Deinen bisherigen Code für das PDF-Anzeigefragment.
    (Das hast Du hoffentlich in eine eigene .java Datei gepackt.)


    Oh, und bitte setz es in die [code=java] Code Tags, dann kann man es auch lesen. :)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!