خرید بک لینک

Vote count: 0

I've doing search for my app, but now I have a strange problem. By typing letters into search view all works, but when I submit search, it brings to relaunching MainActivity.class and then, when I choose some film, project stops to working. I don't know, what happens. I'm begier and it's my first android app. My code:

AndroidManifeest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pl.rzeszow.wsiz.project">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:largeHeap="true">
    <activity android:name=".LoginActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".SignupActivity" />
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>

        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    </activity>
    <activity android:name=".FilmActivity" />
    <activity android:name=".UserRatesActivity"></activity>
</application>

</manifest>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="pl.rzeszow.wsiz.project.MainActivity">

 <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Logout"
    android:id="@+id/button_logout"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="My Rates"
    android:id="@+id/button_rates"
    android:layout_alignBottom="@+id/button_logout"
    android:layout_toLeftOf="@+id/button_logout"/>

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_below="@+id/button_logout"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    />

</RelativeLayout>

options_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/search"
    android:title="@string/app_name"
    android:hint="Search"
    android:icon="@drawable/search"
    app:showAsAction="collapseActionView|ifRoom"
    app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>

in DatabaseAdapter.java

public List<Film> getAllFilms() {
    List<Film> films = new ArrayList<Film>();
    String selectQuery = "SELECT * FROM " + TABLE_FILMS;
    Log.e("myLog", selectQuery);
    SQLiteDatabase db = dbHelper.getReadableDatabase();
    Cursor c = db.rawQuery(selectQuery, null);
    if (c.moveToFirst()) {
        do {
            Film film = new Film();
            film.setId(c.getInt((c.getColumnIndex(KEY_FILMS_ID))));
            film.setName((c.getString(c.getColumnIndex(KEY_FILMS_NAME))));
            film.setYear(c.getInt(c.getColumnIndex(KEY_FILMS_YEAR)));
            film.setCountries((c.getString(c.getColumnIndex(KEY_FILMS_COUNTRIES))));
            film.setDescription((c.getString(c.getColumnIndex(KEY_FILMS_DESCRIPTION))));
            film.setImage(c.getBlob(c.getColumnIndex(KEY_FILMS_IMAGE)));
            films.add(film);
        } while (c.moveToNext());
    }
    retu films;

}

public List<Film> getFilmsByKeyword(String search) {
    List<Film> films = new ArrayList<Film>();
    SQLiteDatabase db = dbHelper.getReadableDatabase();
    String selectQuery =  "SELECT * FROM " + TABLE_FILMS
                        + " WHERE " +  KEY_FILMS_NAME
                        + "  LIKE  '%" + search + "%' ";

    Cursor c = db.rawQuery(selectQuery, null);
    if (c.moveToFirst()) {
        do {
            Film film = new Film();
            film.setId(c.getInt((c.getColumnIndex(KEY_FILMS_ID))));
            film.setName((c.getString(c.getColumnIndex(KEY_FILMS_NAME))));
            film.setYear(c.getInt(c.getColumnIndex(KEY_FILMS_YEAR)));
            film.setCountries((c.getString(c.getColumnIndex(KEY_FILMS_COUNTRIES))));
            film.setDescription((c.getString(c.getColumnIndex(KEY_FILMS_DESCRIPTION))));
            film.setImage(c.getBlob(c.getColumnIndex(KEY_FILMS_IMAGE)));
            films.add(film);
        } while (c.moveToNext());
    }
    retu films;
}

MainActivity.java

public class MainActivity extends AppCompatActivity{

Button buttonLogout;
Button buttonRates;
DatabaseAdapter databaseAdapter;
private List<Film> FilmsList;
private ListView filmsList;
private ListViewAdapter adapter = null;
private SearchView search;

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

    databaseAdapter = new DatabaseAdapter(this);
    databaseAdapter = databaseAdapter.open();

    buttonLogout = (Button) findViewById(R.id.button_logout);
    buttonRates = (Button) findViewById(R.id.button_rates);
    filmsList = (ListView) findViewById(R.id.listView);

    Bitmap bmp1 = BitmapFactory.decodeResource(getResources(), R.drawable.hp);
    Bitmap bmp2 = BitmapFactory.decodeResource(getResources(), R.drawable.inc);
    Bitmap bmp3 = BitmapFactory.decodeResource(getResources(), R.drawable.faf);

    byte[] image1 = DbBitmapUtility.getBytes(bmp1);
    byte[] image2 = DbBitmapUtility.getBytes(bmp2);
    byte[] image3 = DbBitmapUtility.getBytes(bmp3);

    Film film1 = new Film("Inception", 2010, "USA, Great Britain", "Inception film", image2);
    Film film2 = new Film("Harry Potter", 2001, "Great Britain, USA", "Harry Potter film", image1);
    Film film3 = new Film("The Fast and the Furious", 2001, "USA, Germany", "The Fast and the Furious film", image3);

    databaseAdapter.deleteAllFilms();
    databaseAdapter.deleteAllRates();

    databaseAdapter.createFilm(film1);
    databaseAdapter.createFilm(film2);
    databaseAdapter.createFilm(film3);


    Intent intent =  getIntent();
    final User user = (User)intent.getSerializableExtra("User");

    FilmsList = databaseAdapter.getAllFilms();
    for (Film film : FilmsList) {
        Log.d("Film", film.getName());
        Log.d("Film", String.valueOf(film.getYear()));
    }

    adapter = new ListViewAdapter();
    filmsList.setAdapter(adapter);

    filmsList.setOnItemClickListener(new AdapterView.OnItemClickListener(){
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Film film = FilmsList.get(position);

            Intent intent = new Intent(getApplicationContext(),FilmActivity.class);
            intent.putExtra("Film", film);
            intent.putExtra("User", user);
            startActivity(intent);
        }
    });

    buttonLogout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getApplicationContext(),LoginActivity.class);
            startActivity(intent);
        }
    });
    buttonRates.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getApplicationContext(),UserRatesActivity.class);
            intent.putExtra("User", user);
            startActivity(intent);
        }
    });
}

private class ListViewAdapter extends BaseAdapter {
    private LayoutInflater mInflater;

    public ListViewAdapter() {
        mInflater = (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        retu FilmsList.size();
    }

    @Override
    public Film getItem(int position) {
        retu FilmsList.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        final Film film = getItem(position);
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.film_item, parent, false);
            holder = new ViewHolder();
            holder.name = (TextView) convertView.findViewById(R.id.film_name);
            holder.year = (TextView) convertView.findViewById(R.id.film_year);
            holder.image = (ImageView) convertView.findViewById(R.id.imageView);
            convertView.setTag(holder);
        }
        byte[] image = film.getImage();
        Bitmap bitmap = DbBitmapUtility.getImage(image);

        holder = (ViewHolder) convertView.getTag();
        holder.name.setText(film.getName());
        holder.year.setText(String.valueOf(film.getYear()));
        holder.image.setImageBitmap(bitmap);

        retu convertView;
    }

    private class ViewHolder {
        TextView name;
        TextView year;
        ImageView image;
    }
}


@Override
public boolean onCreateOptionsMenu(Menu menu){
    getMenuInflater().inflate(R.menu.options_menu, menu);

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        final SearchView search = (SearchView) menu.findItem(R.id.search).getActionView();
        search.setSearchableInfo(manager.getSearchableInfo(getComponentName()));

        search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

            @Override
            public boolean onQueryTextSubmit(String s) {
                search.clearFocus();
                Log.d("myLog", "onQueryTextSubmit ");
                FilmsList.clear();
                FilmsList = databaseAdapter.getFilmsByKeyword(s);
                filmsList.setAdapter(adapter);
                for (Film film : FilmsList) {
                    Log.d("Film", film.getName());
                    Log.d("Film", String.valueOf(film.getYear()));
                }
                retu false;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                Log.d("myLog", "onQueryTextChange ");
                FilmsList.clear();
                FilmsList = databaseAdapter.getFilmsByKeyword(s);
                filmsList.setAdapter(adapter);
                for (Film film : FilmsList) {
                    Log.d("Film", film.getName());
                    Log.d("Film", String.valueOf(film.getYear()));
                }
                retu false;
            }

        });

    }

    retu true;
}

@Override
protected void onDestroy() {
    super.onDestroy();
    // Close The Database
    databaseAdapter.close();
}

}

Thank you for help!

asked 2 mins ago

برچسب: نویسنده: استخدام کار تاريخ: دوشنبه 10 خرداد 1395 ساعت: 0:44

صفحه بندی