Как загрузить ограниченное количество анализируемого объекта с анализирующего сервера и сгенерировать индивидуальную линейную разметку для всех них? - PullRequest
0 голосов
/ 16 января 2019

Итак, я пытаюсь создать приложение, в котором вы можете написать пост о крутой машине, которую видите. Когда вы создаете сообщение, мое приложение отправляет все подробности на сервер синтаксического анализа Bitnami (например, производитель, модель и т. Д.). Я хотел бы создать канал для сообщений. Для каждого поста я хочу свой линейный макет, где будет текстовое представление для всех этих деталей (производитель и т. Д.), А затем отобразить его в ленте. Каков будет лучший способ сделать это? Мне также было интересно, как я могу загружать только несколько десятков сообщений одновременно, чтобы приложение не становилось слишком медленным? Похоже на Instagram, где они загружают больше постов, когда вы прокрутите достаточно. Я знаю, как получать сообщения с сервера с помощью parseQuery, но не знаю, как загружать больше, когда пользователь прокручивает достаточно.

Я уже выполнил задание, в котором отправляю информацию о споте на серверный класс с именем "Spots" и всю информацию на него. Затем приложение перенаправляет пользователя на фид спотов, где сообщение должно отображаться в макете со всей информацией в их собственных текстовых представлениях. Этот последний бит - часть, которую я не знаю, как сделать. Приложение получит время и время самостоятельно, и я знаю, как это сделать, но я еще этого не сделал.

Это код, который отправляет все подробности о посте:

public class UploadSpot extends AppCompatActivity {

EditText manufacturerET;
EditText modelET;
EditText detailsET;

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

    manufacturerET = (EditText)findViewById(R.id.manufacturerET);
    modelET = (EditText)findViewById(R.id.modelET);
    detailsET = (EditText)findViewById(R.id.detailsET);
}

public void upload(View v)
{
    if(manufacturerET.getText().toString().matches("") || modelET.getText().toString().matches("") ||
            detailsET.getText().toString().matches(""))
    {
        Toast.makeText(this, "Please fill all three sections", Toast.LENGTH_SHORT).show();
    }
    else
    {
        final ParseObject spot = new ParseObject("Spots");

        spot.put("username", ParseUser.getCurrentUser().getUsername().toString());
        spot.put("manufacturer", manufacturerET.getText().toString());
        spot.put("model", modelET.getText().toString());
        spot.put("details", detailsET.getText().toString());

        spot.saveInBackground(new SaveCallback()
        {
            @Override
            public void done(ParseException e)
            {
                if(e == null)
                {
                    Toast.makeText(UploadSpot.this, "Spot uploaded!", Toast.LENGTH_SHORT).show();

                    Intent intent = new Intent(getApplicationContext(), spotting.class);
                    startActivity(intent);
                }
                else
                {
                    Toast.makeText(UploadSpot.this, "Spot could not be uploaded, please try again later", Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

public void goBack(View v)
{
    Intent intent = new Intent(getApplicationContext(), spotting.class);
    startActivity(intent);
}

}

И я бы хотел, чтобы шаблон сообщения выглядел так:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_marginBottom="20dp"
        android:layout_marginTop="20dp"
        android:background="@drawable/spots_background"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical">

            <TextView
                android:id="@+id/manuAndModelTV"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginStart="5dp"
                android:layout_marginTop="5dp"
                android:fontFamily="serif-monospace"
                android:text="Manufacturer + Model"
                android:textSize="18sp"
                android:textStyle="bold"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <TextView
                android:id="@+id/detailsTV"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginBottom="5dp"
                android:layout_marginStart="5dp"
                android:layout_marginTop="5dp"
                android:text="Here would be the details abot the car"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/manuAndModelTV" />

        </LinearLayout>

        <View
            android:layout_width="1dp"
            android:layout_height="80dp"
            android:background="@android:color/black" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="2"
            android:gravity="center_vertical"
            android:orientation="vertical">

            <TextView
                android:id="@+id/spottersUsernameTV"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:text="username"
                android:textAlignment="center"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/timeTV" />

            <TextView
                android:id="@+id/placeTV"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:text="palce"
                android:textAlignment="center"
                app:layout_constraintBottom_toTopOf="@+id/timeTV"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toTopOf="parent" />

            <TextView
                android:id="@+id/timeTV"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dp"
                android:text="time"
                android:textAlignment="center"
                app:layout_constraintBottom_toTopOf="@+id/spottersUsernameTV"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/placeTV" />
        </LinearLayout>
    </LinearLayout>
...