장치의 방향을 변경할 때 목록보기 요소가 사라지지 않도록하려면 어떻게해야합니까?

비 샤알 쿠마르

검색 한 책의 세부 정보를 표시하는 앱을 만들고 있습니다. 문제는 장치의 방향을 변경할 때마다 목록보기 요소가 사라진다는 것입니다. 나는 그들이 사라지지 않게하는 방법에 대한 도움을 원합니다. Loader를 사용해야한다는 느낌이 있지만 어떻게 구현해야할지 모르겠습니다. 여기 내 활동이 있습니다.

MainActivity : -

package com.example.visha.booklistingapp;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
    private BookAdapter mAdapter;
    EditText searchtext;
    ListView earthquakeListView;
    TextView empty;
    TextView authorcheck;
    TextView titlecheck;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        earthquakeListView = (ListView) findViewById(R.id.listView);
        mAdapter = new BookAdapter(this, new ArrayList<Book>());
        earthquakeListView.setAdapter(mAdapter);
        searchtext = (EditText) findViewById(R.id.editText);
        empty = (TextView) findViewById(R.id.textView);
        earthquakeListView.setEmptyView(empty);


    }




    public void searchclick(View view) {
        ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        if(connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
                connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) {
            String parturl = searchtext.getText().toString();
            parturl = parturl.replaceAll("\\s","");
            StringBuilder urlbuilder = new StringBuilder();
            urlbuilder.append("  https://www.googleapis.com/books/v1/volumes?q=");
            urlbuilder.append(parturl);
            urlbuilder.append("&maxResults=5");
            String url = urlbuilder.toString();
            BookAsyncTask task = new BookAsyncTask();
            task.execute(url);        }
        else{
            Toast.makeText(getApplicationContext(), "You are not connected to the internet",
                    Toast.LENGTH_LONG).show();
        }

    }
    private class BookAsyncTask extends AsyncTask<String, Void, List<Book>> {
        @Override
        protected List<Book> doInBackground(String... urls) {
            // Don't perform the request if there are no URLs, or the first URL is null
            if (urls.length < 1 || urls[0] == null) {
                return null;
            }
            List<Book> result = QueryUtils.fetchBookData(urls[0]);
            return result;
        }
        @Override
        protected void onPostExecute(List<Book> data) {
            mAdapter.clear();
            if (data != null && !data.isEmpty()) {
                mAdapter.addAll(data);
            }
        }
    }
}

QueryUtils :-

package com.example.visha.booklistingapp;
import android.text.TextUtils;
import android.util.Log;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by visha on 14-10-2016.
 */
public final class QueryUtils {
    private static final String LOG_TAG = QueryUtils.class.getSimpleName();
    private QueryUtils() {
    }
    public static List<Book> fetchBookData(String requestUrl) {
        URL url = createUrl(requestUrl);
        String jsonResponse = null;
        try {
            jsonResponse = makeHttpRequest(url);
        } catch (IOException e) {
            Log.e(LOG_TAG, "Problem making the HTTP request.", e);
        }
        List<Book> Books = extractFeatureFromJson(jsonResponse);
        return Books;
    }
    private static URL createUrl(String stringUrl) {
        URL url = null;
        try {
            url = new URL(stringUrl);
        } catch (MalformedURLException e) {
            Log.e(LOG_TAG, "Problem building the URL ", e);
        }
        return url;
    }
    private static String makeHttpRequest(URL url) throws IOException {
        String jsonResponse = "";
        if (url == null) {
            return jsonResponse;
        }
        HttpURLConnection urlConnection = null;
        InputStream inputStream = null;
        try {
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setReadTimeout(10000 /* milliseconds */);
            urlConnection.setConnectTimeout(15000 /* milliseconds */);
            urlConnection.setRequestMethod("GET");
            urlConnection.connect();
            if (urlConnection.getResponseCode() == 200) {
                inputStream = urlConnection.getInputStream();
                jsonResponse = readFromStream(inputStream);
            } else {
                Log.e(LOG_TAG, "Error response code: " + urlConnection.getResponseCode());
            }
        } catch (IOException e) {
            Log.e(LOG_TAG, "Problem retrieving the Book JSON results.", e);
        } finally {
            if (urlConnection != null) {
                urlConnection.disconnect();
            }
            if (inputStream != null) {
                inputStream.close();
            }
        }
        return jsonResponse;
    }
    private static String readFromStream(InputStream inputStream) throws IOException {
        StringBuilder output = new StringBuilder();
        if (inputStream != null) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, Charset.forName("UTF-8"));
            BufferedReader reader = new BufferedReader(inputStreamReader);
            String line = reader.readLine();
            while (line != null) {
                output.append(line);
                line = reader.readLine();
            }
        }
        return output.toString();
    }
    private static List<Book> extractFeatureFromJson(String BookJSON) {
        if (TextUtils.isEmpty(BookJSON)) {
            return null;
        }
        List<Book> Books = new ArrayList<>();
        try {
            JSONObject baseJsonResponse = new JSONObject(BookJSON);
            JSONArray BookArray = baseJsonResponse.getJSONArray("items");
            for (int i = 0; i < BookArray.length(); i++) {
                JSONObject currentBook = BookArray.getJSONObject(i);
                JSONObject properties = currentBook.getJSONObject("volumeInfo");
                String author;
                if(properties.has("authors")) {
                     author = properties.getString("authors");
                }
                else {
                     author = "";
                }
                String title = properties.getString("title");
                Book Book = new Book(author, title);
                Books.add(Book);
            }
        } catch (JSONException e) {
            Log.e("QueryUtils", "Problem parsing the Book JSON results", e);
        }
        return Books;
    }
}
아밋 고얄

활동 클래스의 onSaveInstanceState 및 onRestoreInstanceState 메서드를 재정의해야합니다.

onSaveInstanceState에서 목록 데이터를 번들에 저장합니다.

onRestoreInstanceState에서 번들 데이터로 목록을 복원하고 목록 어댑터를 다시 만듭니다.

건배!!!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

브라우저 크기가 변경 될 때이 목록이 줄을 끊지 않도록하려면 어떻게해야합니까?

분류에서Dev

양식에 사용자 정의 컨트롤을 추가 할 때 단추 크기가 조정되지 않도록하려면 어떻게해야합니까?

분류에서Dev

IMAP을 사용할 때 Thunderbird가 원격 서버에 이메일을 저장하지 않도록하려면 어떻게해야합니까?

분류에서Dev

확대 / 축소 할 때 탐색의 활성 상태가 공간을 생성하지 않도록하려면 어떻게해야합니까?

분류에서Dev

무작위로 절대 위치를 부여하고 싶을 때 요소가 겹치지 않도록하려면 어떻게해야합니까?

분류에서Dev

목록을 작성할 때 Java XMLEconder가 너무 많은 메모리를 사용하지 않도록하려면 어떻게해야합니까?

분류에서Dev

Trait 값을 편집 할 때 변경 알림을 보내기 전에 사용자가 <RETURN>을 누르도록하려면 어떻게해야합니까?

분류에서Dev

방향 변경시 Picker Fragment가 다시 시작되지 않도록하려면 어떻게해야합니까?

분류에서Dev

하위 클래스가있는 UIButton에 드롭 다운 삼각형을 추가했습니다. 제목을 변경할 때 확장되지 않도록하려면 어떻게해야합니까?

분류에서Dev

jslider가 슬라이드 할 때 실제로 영향을 미치도록하려면 어떻게해야합니까?

분류에서Dev

"overflow-y : auto"가있는 요소를 어떻게 가질 수 있지만 jquery ui sortable을 사용하여 항목을 가로로 끌 때 브라우저가 스크롤 할 수 있도록하려면 어떻게해야합니까?

분류에서Dev

상태가 변경 될 때 SceneKit 장면이 제대로 렌더링되지 않도록하려면 어떻게해야합니까?

분류에서Dev

Aurelia가 URL에서 #을보고 경로를 변경하려고 할 때 페이지 링크 (Fragment Identifiers)를 클릭 할 때 JS 오류가 발생하지 않도록하려면 어떻게해야합니까?

분류에서Dev

시작 서비스가 원격 드라이브를 사용할 수있을 때까지 기다리도록하려면 어떻게해야합니까?

분류에서Dev

R : 두 데이터 프레임 (그룹 별 / 요약)을 병합 할 때 오류가 발생하지 않도록하려면 어떻게해야합니까?

분류에서Dev

JButton의 크기가 변경되지 않도록하려면 어떻게해야합니까?

분류에서Dev

CAGradientLayer를 셀에 적용 할 때 그라디언트의 영향을받지 않도록 셀의 뷰 중 하나를 앞으로 가져 오려면 어떻게해야합니까?

분류에서Dev

창 크기를 조정할 때 행의 한 요소가 너비를 변경하도록하려면 어떻게해야합니까?

분류에서Dev

Python 목록을 스 플라이 싱 할 때 지정된 첫 번째 다음의 모든 요소를 포함하여 생성하도록 지정하려면 어떻게해야합니까?

분류에서Dev

배열이 비어있을 때 UITableView가 충돌하지 않도록하려면 어떻게해야합니까?

분류에서Dev

<li> 요소 안에 '공백'을 추가 할 때 텍스트가 같은 줄에 유지되도록하려면 어떻게해야합니까?

분류에서Dev

배경을 클릭 할 때 머티리얼 UI 대화 상자가 닫히지 않도록하려면 어떻게해야합니까?

분류에서Dev

iPad를 회전 할 때 사용자 지정보기가있는 UIBarButtonItem이 늘어나지 않도록하려면 어떻게해야합니까?

분류에서Dev

관찰 가능한 스크롤보기를 사용할 때 내 탭보기가 전체 화면을 채우도록하려면 어떻게해야합니까?

분류에서Dev

실행이 끝날 때 Symfony가 SESSION을 지우지 않도록하려면 어떻게해야합니까?

분류에서Dev

Carrierwave를 사용할 때 2 개의 업 로더가 1 개의 클라우드 파일을 가리 키도록하려면 어떻게해야합니까?

분류에서Dev

SSH 연결을 닫을 때 '종료'만 저장되지 않도록하려면 어떻게해야합니까?

분류에서Dev

목록에 벡터가있을 때 마지막 값만 남기고 목록 열을 공통 열로 변경하려면 어떻게해야합니까?

분류에서Dev

추가 유형을 지정할 때 TypeScript가 제한된 제네릭 유형의 값을 추론하도록하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    브라우저 크기가 변경 될 때이 목록이 줄을 끊지 않도록하려면 어떻게해야합니까?

  2. 2

    양식에 사용자 정의 컨트롤을 추가 할 때 단추 크기가 조정되지 않도록하려면 어떻게해야합니까?

  3. 3

    IMAP을 사용할 때 Thunderbird가 원격 서버에 이메일을 저장하지 않도록하려면 어떻게해야합니까?

  4. 4

    확대 / 축소 할 때 탐색의 활성 상태가 공간을 생성하지 않도록하려면 어떻게해야합니까?

  5. 5

    무작위로 절대 위치를 부여하고 싶을 때 요소가 겹치지 않도록하려면 어떻게해야합니까?

  6. 6

    목록을 작성할 때 Java XMLEconder가 너무 많은 메모리를 사용하지 않도록하려면 어떻게해야합니까?

  7. 7

    Trait 값을 편집 할 때 변경 알림을 보내기 전에 사용자가 <RETURN>을 누르도록하려면 어떻게해야합니까?

  8. 8

    방향 변경시 Picker Fragment가 다시 시작되지 않도록하려면 어떻게해야합니까?

  9. 9

    하위 클래스가있는 UIButton에 드롭 다운 삼각형을 추가했습니다. 제목을 변경할 때 확장되지 않도록하려면 어떻게해야합니까?

  10. 10

    jslider가 슬라이드 할 때 실제로 영향을 미치도록하려면 어떻게해야합니까?

  11. 11

    "overflow-y : auto"가있는 요소를 어떻게 가질 수 있지만 jquery ui sortable을 사용하여 항목을 가로로 끌 때 브라우저가 스크롤 할 수 있도록하려면 어떻게해야합니까?

  12. 12

    상태가 변경 될 때 SceneKit 장면이 제대로 렌더링되지 않도록하려면 어떻게해야합니까?

  13. 13

    Aurelia가 URL에서 #을보고 경로를 변경하려고 할 때 페이지 링크 (Fragment Identifiers)를 클릭 할 때 JS 오류가 발생하지 않도록하려면 어떻게해야합니까?

  14. 14

    시작 서비스가 원격 드라이브를 사용할 수있을 때까지 기다리도록하려면 어떻게해야합니까?

  15. 15

    R : 두 데이터 프레임 (그룹 별 / 요약)을 병합 할 때 오류가 발생하지 않도록하려면 어떻게해야합니까?

  16. 16

    JButton의 크기가 변경되지 않도록하려면 어떻게해야합니까?

  17. 17

    CAGradientLayer를 셀에 적용 할 때 그라디언트의 영향을받지 않도록 셀의 뷰 중 하나를 앞으로 가져 오려면 어떻게해야합니까?

  18. 18

    창 크기를 조정할 때 행의 한 요소가 너비를 변경하도록하려면 어떻게해야합니까?

  19. 19

    Python 목록을 스 플라이 싱 할 때 지정된 첫 번째 다음의 모든 요소를 포함하여 생성하도록 지정하려면 어떻게해야합니까?

  20. 20

    배열이 비어있을 때 UITableView가 충돌하지 않도록하려면 어떻게해야합니까?

  21. 21

    <li> 요소 안에 '공백'을 추가 할 때 텍스트가 같은 줄에 유지되도록하려면 어떻게해야합니까?

  22. 22

    배경을 클릭 할 때 머티리얼 UI 대화 상자가 닫히지 않도록하려면 어떻게해야합니까?

  23. 23

    iPad를 회전 할 때 사용자 지정보기가있는 UIBarButtonItem이 늘어나지 않도록하려면 어떻게해야합니까?

  24. 24

    관찰 가능한 스크롤보기를 사용할 때 내 탭보기가 전체 화면을 채우도록하려면 어떻게해야합니까?

  25. 25

    실행이 끝날 때 Symfony가 SESSION을 지우지 않도록하려면 어떻게해야합니까?

  26. 26

    Carrierwave를 사용할 때 2 개의 업 로더가 1 개의 클라우드 파일을 가리 키도록하려면 어떻게해야합니까?

  27. 27

    SSH 연결을 닫을 때 '종료'만 저장되지 않도록하려면 어떻게해야합니까?

  28. 28

    목록에 벡터가있을 때 마지막 값만 남기고 목록 열을 공통 열로 변경하려면 어떻게해야합니까?

  29. 29

    추가 유형을 지정할 때 TypeScript가 제한된 제네릭 유형의 값을 추론하도록하려면 어떻게해야합니까?

뜨겁다태그

보관