RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / user-226834

Антон Лялин's questions

Martin Hope
Антон Лялин
Asked: 2020-02-09 23:52:33 +0000 UTC

在 Dart 中为数据库生成对象时出错

  • 0

有三类,对他们来说也有Bean三类。我开始生成,但出现以下错误:

Exception while parsing field: variables!
Exception while parsing field: trackedVariable!
Exception: Non-bean type provided!

StackTrace生成文件中的表单错误。拉取依赖项:

dependencies:
   flutter:
     sdk: flutter
   sqflite:
   jaguar_orm: ^2.2.0
   jaguar_query_sqflite: ^2.2.0

dev_dependencies:
   flutter_test:
     sdk: flutter
   jaguar_orm_gen: ^2.2.0
   build_runner: ^0.10.0

在此处输入图像描述

在此处输入图像描述


在此处输入图像描述

在此处输入图像描述


在此处输入图像描述

在此处输入图像描述

база-данных
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-01-11 16:36:53 +0000 UTC

如何将返回值传递给 Text 小部件?

  • 0
class MainContainer extends StatelessWidget {
@override
Widget build(BuildContext context) {
  return new Container(
      child: Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
      Center(
        child: ButtonTheme(
          minWidth: 220.0,
          height: 30.0,
          child: RaisedButton(
            onPressed: () {
              _getingResult(context);
            },
            color: Colors.blue,
            child: Text(
              'second screen',
              style: TextStyle(color: Colors.white),
            ),
          ),
        ),
      ),
      Text('Don\'t result') //...
    ],
  ));
}

void _getingResult(BuildContext context) async {
  final result = await Navigator.push(
      context, MaterialPageRoute(builder: (context) => SecondScreen()));
  //...
  }
}

在 SecondScreen() 中,我只是将 String 变量传递回 MainContainer(),我想在 Text('Don\'t result') 小部件中显示此变量,但我不知道该怎么做

flutter
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-10-29 22:46:59 +0000 UTC

几次点击bottomNavigation后,某个fragment的View不再显示

  • 1

主要活动:

问题是在三个fragment中的几次transition之后(大约3个transition之后),fragment的view一直在后台,也就是没有变化,应用没有crash,内存没有增长(used,check in the工作室)。

使用 cicerone 在碎片中移动

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()){
        case R.id.certificationItem:
            router.replaceScreen(FragmentScreenKeys.FRAGMENT_CERTIFICATION);
            return true;
        case R.id.planItem:
            router.replaceScreen(FragmentScreenKeys.FRAGMENT_PLAN);
            return true;
        case R.id.chatItem:
            router.replaceScreen(FragmentScreenKeys.FRAGMENT_CHAT);
            return true;
            default:
                throw new RuntimeException("Unknown item.getId");
    }
}

片段1:

private View view;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ((MainActivity)getActivity()).getComponent().inject(this);
}

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

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    ButterKnife.bind(this, view);
}

@Override
public void onResume() {
    super.onResume();
    holder.setNavigator(navigator);
}

@Override
public void onPause() {
    holder.removeNavigator();
    super.onPause();
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    view = null;
}

@Override
public Fragment newInstance() {
    return new FragmentCertification();
}

片段2:

private View view;
private LearningAdapter adapter;

@Inject
ApiService apiService;

@BindView(R.id.recyclerPlan) RecyclerView recyclerPlan;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ((MainActivity)getActivity()).getComponent().inject(this);
}

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

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    ButterKnife.bind(this, view);
    initRecycler(view);
}

@Override
public void onResume() {
    super.onResume();
    showLearning();
}

private void initRecycler(View view){
    recyclerPlan.setLayoutManager(new LinearLayoutManager(view.getContext(),
            OrientationHelper.VERTICAL, false));
}

private void showLearning(){
    adapter = new LearningAdapter(new ArrayList<>());
    recyclerPlan.setAdapter(adapter);
    adapter.notifyDataSetChanged();
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    view = null;
}

@Override
public Fragment newInstance() {
    return new FragmentPlan();
}

片段3:

private View view;

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

@Override
public void onDestroyView() {
    super.onDestroyView();
    view = null;
}

@Override
public Fragment newInstance() {
    return new FragmentChat();
}

和导航器:

public MainNavigator(FragmentActivity activity, int containerId) {
    super(activity, containerId);
}

@Override
protected Intent createActivityIntent(Context context, String screenKey, Object data) {
    return null;
}

@Override
protected Fragment createFragment(String screenKey, Object data) {
    switch (screenKey){
        case FragmentScreenKeys.FRAGMENT_CERTIFICATION:
            return new FragmentCertification().newInstance();
        case FragmentScreenKeys.FRAGMENT_PLAN:
            return new FragmentPlan().newInstance();
        case FragmentScreenKeys.FRAGMENT_CHAT:
            return new FragmentChat().newInstance();
            default:
                throw new RuntimeException("Unknown screen key");
    }
}
android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-10-05 13:28:52 +0000 UTC

选项菜单不出现

  • 0

缺少工具栏菜单

MainActivity.xml

<android.support.v7.widget.Toolbar
    android:id="@+id/mainToolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:title="@string/app_name"
    app:titleTextColor="@android:color/white" />

<FrameLayout
    android:id="@+id/main_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@id/mainBottomNavigation"/>

<android.support.design.widget.BottomNavigationView
    android:id="@+id/mainBottomNavigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:menu="@menu/menu_bottomnavigation"
    android:layout_alignParentBottom="true"
    android:background="?android:attr/windowBackground"/>
</RelativeLayout>

菜单.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/exit"
        android:title="@string/exit"
        app:showAsAction="never"/>
</menu>

MainActivity.class

@BindView(R.id.mainToolbar) Toolbar toolbar;

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_options_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case R.id.exit: 
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}
android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-09-14 16:42:13 +0000 UTC

如何将 Intbuffer 与 FileChanel 与 RandomAccessFile 一起使用?

  • 0

我需要写一个字符串,为此我使用它FileChanel,IntBuffer以便写入速度很高,但我得到一个错误Exception in thread "main" java.nio.BufferOverflowException- 位置超过限制,但为什么会发生这种情况?和代码:

public void write(String string) throws IOException {
    FileChannel fc = new RandomAccessFile(
            new File(FILE_NAME), MODE_RW).getChannel();
    IntBuffer ib = fc.map(
            FileChannel.MapMode.READ_WRITE, 0, fc.size()).asIntBuffer();
    for (int i = 0; i < string.toCharArray().length; i++) {
        ib.put(string.toCharArray()[i]);
    }
    fc.close();
}
java
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-08-03 19:02:31 +0000 UTC

抛出 java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 4 column 14 path $.result

  • 0

错误开启

{
"resultCode": 200,
"error": "",
"result": [
{
"id": 1000,
"category": "Терминал",
"image": "https://loremflickr.com/200/200/logo?lock=1166",
"address": "433 Pierrepont Place, Henrietta, Wisconsin, 1587",
"location": {
  "latitude": "56.825212",
  "longitude": "53.232379"
},
"description": "Nulla amet dolor sint veniam elit."
},

public class Places{
    @SerializedName("id")
    private int id;
    @NonNull
    @SerializedName("category")
    private String category;
    @NonNull
    @SerializedName("image")
    private String image;
    @NonNull
    @SerializedName("address")
    private String address;
    @NonNull
    @SerializedName("description")
    private String description;
    @SerializedName("location")
    List<Location> locations = null;

public class Location{
    @SerializedName("latitude")
    private double latitude;
    @SerializedName("longitude")
    private double longitude;

public class MapResponse {
    @SerializedName("places")
    private List<Places> places = null;

public class ApiResponse<T> {
    @SerializedName("resultCode")
    private int resultCode;
    @SerializedName("error")
    private String error;
    @SerializedName("result")
    private T result;

@GET(EnumsUrl.URL_MAP)
Observable<ApiResponse<MapResponse>> getMaps();
android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-08-03 17:51:29 +0000 UTC

如何使用改造解析嵌套数组?

  • 0

有 json,它有一个嵌套数组payments,如何使用它来解析它retrofit?

"credits": [

  {

    "name": "Кредит Выгодный",

    "contractNumber": 4666888,

    "openedDate": "2018-02-09T21:58:57+00:00",

    "nextPaymentDate": "2018-05-11T05:58:57+00:00",

    "nextPaymentAmount": 8900,

    "percent": 15.4,

    "amount": 125000,

    "currency": "rur",

    "status":"active",

    "payments": [

      {

        "paymentDate": "2018-03-09T21:58:57+00:00",

        "paymentAmount": 3400,

        "status": "paid"

      },

      {

        "paymentDate": "2018-04-09T21:58:57+00:00",

        "paymentAmount": 3700,

        "status": "paid"

      },

      {

        "paymentDate": "2018-05-09T21:58:57+00:00",

        "paymentAmount": 4400,

        "status": "skipped"

      },

      {

        "paymentDate": "2018-06-09T21:58:57+00:00",

        "paymentAmount": 4400,

        "status": "future"

      }

    ]

  },

对于我credits创建class Credits { //данные (id, name, и т.д.)},如果我创建相同的payments,那么它很简单null或发生错误

java.lang.IllegalStateException: 
Expected BEGIN OBJECT but was BEGIN_ARRAY at line 4 column 14 path $.result

public abstract class BaseProducts {

@NonNull
@SerializedName("name")
private String name;
@NonNull
@SerializedName("openedDate")
private Date openedDate;
@SerializedName("amount")
private Double amount;
@NonNull
@SerializedName("currency")
private String currency;
@Nullable
@SerializedName("status")
private String status;

public class Credits extends BaseProducts {

@SerializedName("contractNumber")
private Long contractNumber;
@NonNull
@SerializedName("nextPaymentDate")
private Date nextPaymentDate;
@SerializedName("nextPaymentAmount")
private Double nextPaymentAmount;
@NonNull
@SerializedName("percent")
private Double percent;
}

public class Payments extends BaseProducts {

@NonNull
@SerializedName("paymentDate")
private Date paymentDate;
@SerializedName("paymentAmount")
private Double paymentAmount;
}

public class ApiResponse<T> {

@SerializedName("resultCode")
private int resultCode;
@SerializedName("error")
private String error;
@SerializedName("result")
private T result;
}

public class ProductResponse {
@SerializedName("credits")
private List<Credits> credits = null;
@SerializedName("payments")
private List<Payments> payments = null;
}

public interface BankApi {
@GET(EnumsUrl.URL_PRODUCTS)
Single<ApiResponse<ProductResponse>> getProductsSingle();
}
android
  • 3 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-08-02 19:44:08 +0000 UTC

如何在按钮上关闭或隐藏 BottomSheetBehavior?

  • 2

需要按按钮显示BottomSheet,按按钮隐藏,但是隐藏有问题。

private void closeBottomSheet() {
    bottomSheetBehavior.setHideable(false);
    bottomSheetBehavior.setPeekHeight(0);
}
android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-08-02 19:24:46 +0000 UTC

如何让 BottomSheetBehabior 出现在按钮点击上?

  • 1

我这样做,但它没有出现。

@OnClick(R.id.btnMap)
public void click(){
    initBottomSheet();
    Log.d("TAG", "!!!");
}
private void initBottomSheet() {
    bottomSheetBehavior = BottomSheetBehavior.from(layout_bottom);
    bottomSheetBehavior.setState(BottomSheetBehavior.STATE_HIDDEN);
    bottomSheetBehavior.setPeekHeight(340);
    bottomSheetBehavior.setHideable(false);
    initBottomSheetStateListener(bottomSheetBehavior);
}


private void initBottomSheetStateListener(@NonNull BottomSheetBehavior bottomSheetBehavior) {
    bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
        @Override
        public void onStateChanged(@NonNull View bottomSheet, int newState) {
        }

        @Override
        public void onSlide(@NonNull View bottomSheet, float slideOffset) {
        }
    });
}

和标记

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/bottom_sheet"
android:layout_width="match_parent"
android:layout_height="220dp"
android:background="@drawable/shape_bottom_sheet"
android:orientation="vertical"
app:behavior_hideable="true"
app:behavior_peekHeight="0dp"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">
android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-08-01 23:57:27 +0000 UTC

如何制作如图所示的按钮?

  • 1

在此处输入图像描述

如何在白色背景上制作小图片?

android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-07-30 15:45:03 +0000 UTC

如何在每个状态通道上重绘 customView?

  • 0

有customViewfor pin activity,当你点击数字的时候,它应该被涂成不同的颜色,即显示输入了多少个pin码的字符,每按一次,我将customView输入的字符数传递给类,并且每次我都需要重新绘制它。我该怎么做? 在此处输入图像描述

类customView

public class IndicatorWithCircles extends AppCompatTextView {

    private static final int DEFAULT_COUNT_CIRCLES = 4;
    private static final int DEFAULT_CIRCLE_RADIUS_DP = 14;
    private static final int DEFAULT_DISTANCE_BETWEEN_CIRCLE_DP = DEFAULT_CIRCLE_RADIUS_DP;
    private static final int DEFAULT_STROKE_THICKNESS_DP = 4;
    private static final int DEFAULT_CIRCLE_STROKE_COLOR = Color.BLACK;
    private static final int DEFAULT_CIRCLE_INSIDE_COLOR = Color.GRAY;
    private static final int DEFAULT_ACTIVE_FILL_CIRCLE = 0;

    private Paint paintStroke;
    private Paint paintInside;
    private int countCircles;
    private int circleRadius;
    private int distanceBetween;
    private int strokeThickness;
    private int strokeColor = Color.BLACK;
    private int insideColor = Color.GRAY;
    private int activeFillCircles;

    public IndicatorWithCircles(Context context) {
        this(context, null);
    }

    public IndicatorWithCircles(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public IndicatorWithCircles(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initialize(attrs);
    }

    private void initialize(@Nullable AttributeSet attrs) {
        initializeAttrs(attrs);
        initializeUI();
}

private void initializeAttrs(@Nullable AttributeSet attrs) {
    if (attrs != null){
        final TypedArray array = getContext().obtainStyledAttributes(attrs, R.styleable.IndicatorWithCircles);
        try {
            countCircles = array.getInteger(R.styleable.IndicatorWithCircles_count_circles,
                    DEFAULT_COUNT_CIRCLES);
            circleRadius = array.getDimensionPixelSize(R.styleable.IndicatorWithCircles_circle_radius,
                    DEFAULT_CIRCLE_RADIUS_DP);
            distanceBetween = array.getDimensionPixelSize(R.styleable.IndicatorWithCircles_distance_between_circles,
                    DEFAULT_DISTANCE_BETWEEN_CIRCLE_DP);
            strokeThickness = array.getDimensionPixelSize(R.styleable.IndicatorWithCircles_stroke_thickness,
                    DEFAULT_STROKE_THICKNESS_DP);
            strokeColor = array.getColor(R.styleable.IndicatorWithCircles_circle_stroke_color,
                    DEFAULT_CIRCLE_STROKE_COLOR);
            insideColor = array.getColor(R.styleable.IndicatorWithCircles_circle_inside_color,
                    DEFAULT_CIRCLE_INSIDE_COLOR);
            activeFillCircles = array.getInteger(R.styleable.IndicatorWithCircles_active_fill_circle,
                    DEFAULT_ACTIVE_FILL_CIRCLE);
        } catch (Throwable throwable){
            Log.d("", throwable.getMessage());
        } finally {
            array.recycle();
        }
    } else {
        Log.d("", "AttributeSet is null");
    }
}

private int dpToPx(int dp){
    DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
    return (int) (dp * displayMetrics.density);
}
//Передаю число введенных символов
public void setActiveFillCircles(int activeFillCircles) {
    if (activeFillCircles >= countCircles)
        this.activeFillCircles = countCircles;
    else
        this.activeFillCircles = activeFillCircles;
}

@Contract(pure = true)
private int minInteger(){
    return activeFillCircles <= countCircles ? activeFillCircles : countCircles;
}

private void initializeUI() {
    paintStroke = new Paint();
    paintStroke.setColor(strokeColor);
    paintStroke.setStyle(Paint.Style.STROKE);
    paintStroke.setStrokeWidth(strokeThickness);
    paintStroke.setAntiAlias(true);
    paintInside = new Paint();
    paintInside.setColor(insideColor);
    paintInside.setStyle(Paint.Style.FILL);
    paintInside.setAntiAlias(true);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    drawStroke(canvas);
    drawInside(canvas);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    int desiredWidth = countCircles * (circleRadius + distanceBetween);
    int desiredHeight = (circleRadius * 3) * 2;

    int widthMode = MeasureSpec.getMode(widthMeasureSpec);
    int widthSize = MeasureSpec.getSize(widthMeasureSpec);
    int heightMode = MeasureSpec.getMode(heightMeasureSpec);
    int heightSize = MeasureSpec.getSize(heightMeasureSpec);

    int width;
    int height;

    if (widthMode == MeasureSpec.EXACTLY) {
        width = widthSize;
    } else if (widthMode == MeasureSpec.AT_MOST) {
        width = Math.min(desiredWidth, widthSize);
    } else {
        width = desiredWidth;
    }

    if (heightMode == MeasureSpec.EXACTLY) {
        height = heightSize;
    } else if (heightMode == MeasureSpec.AT_MOST) {
        height = Math.min(desiredHeight, heightSize);
    } else {
        height = desiredHeight;
    }
    setMeasuredDimension(width, height);
}
//Рисую сначала внешнюю линию
private void drawStroke(Canvas canvas){
    for (int i = 1; i <= countCircles ; i++) {
        canvas.drawCircle(distanceBetween * i + circleRadius + strokeThickness,
                circleRadius * 3, circleRadius, paintStroke);
    }
}
//Окрашиваю окружность, должна быть равна числу введенных символов
private void drawInside(Canvas canvas){
    for (int i = 1; i <= minInteger(); i++) {
        canvas.drawCircle(distanceBetween * i + circleRadius + strokeThickness,
                circleRadius * 3, circleRadius, paintInside);
    }
}
}
android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-07-27 14:30:16 +0000 UTC

如何将数据从 Observable<io.rxjava> 保存到 List<>?

  • 1

有一种从 json 接收数据并创建的方法Observable<>,我需要从中获取数据并将其保存到List<>:

@NonNull
public Observable<List<BaseProducts>> getProducts(){
    return bankApi.getProductsObservable()
            //здесь получаю result
            .map(productResponseApiResponse -> productResponseApiResponse.getResult())
            //здесь конвертирую result в готовые типы (DTO)
            .map(response -> converter.convert(response))
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());
}

接下来,我需要过滤数据并将其传递给 List<>

@NonNull
private Observable<List<BaseProducts>> getActive(){
    return getProducts()
            .flatMap(Observable::fromIterable)
            .filter(products -> !products.getStatus().equals(ACTIVE_PRODUCTS))
            .toList()
            .toObservable();
}

有一个过滤,我现在如何将过滤后的流保存在 List<> 中?

例如,如果您保存到List<>

@NonNull
public List<BaseProducts> getActiveProducts(){
    List<BaseProducts> activeProducts = new ArrayList<>();
    getProducts()
            .subscribe(products -> activeProducts.addAll(products));
    return activeProducts;
}

但是通过debugger显示activeProducts = null当它products存储数据时

@Inject
public ProductsItemBuilderImpl(@NonNull ProductsRepository repository) {
    this.baseProducts = repository.getActiveProducts();
}

@NonNull
@Override
public List<BaseProductsItem> build() {
    buildDeposits(baseProducts);
    buildCredits(baseProducts);
    buildDebitCards(baseProducts);
    buildCreditCards(baseProducts);
    return baseProductsItems;
}

在这里,我将其称为 List

java
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-07-26 13:36:37 +0000 UTC

如何将水平recyclerView连接到垂直recyclerView?

  • 3

您需要创建一个元素的垂直列表,其中一个元素处于水平位置。因此,需要使用两个recyclerViewAdapter,但问题是不理解这个。它是如何完成的?已经有一个垂直适配器

public class ProductsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

@NonNull
private List<BaseProductsItem> baseProductsItems;
@Nullable
private OnItemClickListener onItemClickListener;

public ProductsAdapter(@NonNull List<BaseProductsItem> baseProductsItems,
                       @Nullable OnItemClickListener onItemClickListener) {
    this.baseProductsItems = baseProductsItems;
    this.onItemClickListener = onItemClickListener;
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view;
    switch (viewType){
        case ProductsType.TITLE:
            view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.item_title_products, parent, false);
            return new TitleVH(view);
        case ProductsType.DEPOSIT:
            view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.item_deposits_products, parent, false);
            return new DepositVH(view);
        case ProductsType.CREDIT:
            view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.item_credits_products, parent, false);
            return new CreditVH(view);
        case ProductsType.DEBIT_CARD:
            view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.item_debitcards_products, parent, false);
            return new DebitCardVH(view);
        case ProductsType.CREDIT_CARD:
            view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.item_creditcards_products, parent, false);
            return new CreditCardVH(view);
    }
    return null;
}

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
    holder.itemView.setTag(position);
    BaseProductsItem item = baseProductsItems.get(position);
    if (item instanceof TitleProductsItem) {
        TitleVH titleVH = (TitleVH) holder;
        TitleProductsItem titleItem = (TitleProductsItem) item;
        titleVH.tvTitle.setText(null);
    } else if (item instanceof DepositsProductsItem) {
        DepositVH depositVH = (DepositVH) holder;
        DepositsProductsItem depositItem = (DepositsProductsItem) item;
        depositVH.tvNameDeposits.setText(null);
        depositVH.tvOpenedDeposits.setText(null);
        depositVH.tvAmountDeposits.setText(null);
    } else if (item instanceof CreditsProductsItem) {
        CreditVH creditVH = (CreditVH) holder;
        CreditsProductsItem creditItem = (CreditsProductsItem) item;
        creditVH.tvNameCredits.setText(null);
        creditVH.tvNextPaymentDateCredits.setText(null);
        creditVH.tvNextPaymentAmountCredits.setText(null);
        creditVH.tvAmountCredits.setText(null);
    } else if (item instanceof DebitCardsProductsItem) {
        DebitCardVH debitCardVH = (DebitCardVH) holder;
        DebitCardsProductsItem cardItem = (DebitCardsProductsItem) item;
        debitCardVH.tvDebitCardsNumber.setText(null);
        debitCardVH.tvDebitCardsName.setText(null);
        debitCardVH.tvDebitCardsAmount.setText(null);
    } else if (item instanceof CreditCardsProductsItem) {
        CreditCardVH creditCardVH = (CreditCardVH) holder;
        CreditCardsProductsItem cardItem = (CreditCardsProductsItem) item;
        creditCardVH.tvCreditCardsNumber.setText(null);
        creditCardVH.tvCreditCardsName.setText(null);
        creditCardVH.tvCreditCardsAmount.setText(null);
    }
}

public static class TitleVH extends RecyclerView.ViewHolder {

    @BindView(R.id.tvTitle) TextView tvTitle;

    public TitleVH(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }
}

public static class AccountVH extends RecyclerView.ViewHolder {
    public AccountVH(View itemView) {
        super(itemView);
    }
}

public static class DepositVH extends RecyclerView.ViewHolder {

    @BindView(R.id.tvNameDeposits) TextView tvNameDeposits;

    @BindView(R.id.tvOpenedDeposits) TextView tvOpenedDeposits;

    @BindView(R.id.tvAmountDeposits) TextView tvAmountDeposits;

    public DepositVH(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }
}

public static class CreditVH extends RecyclerView.ViewHolder {

    @BindView(R.id.tvNameCredits) TextView tvNameCredits;

    @BindView(R.id.tvNextPaymentDateCredits) TextView tvNextPaymentDateCredits;

    @BindView(R.id.tvNextPaymentAmountCredits) TextView tvNextPaymentAmountCredits;

    @BindView(R.id.tvAmountCredits) TextView tvAmountCredits;

    public CreditVH(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }
}

public static class DebitCardVH extends RecyclerView.ViewHolder {

    @BindView(R.id.tvDebitCardsName) TextView tvDebitCardsName;

    @BindView(R.id.tvDebitCardsNumber) TextView tvDebitCardsNumber;

    @BindView(R.id.tvDebitCardsAmount) TextView tvDebitCardsAmount;

    public DebitCardVH(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }
}

public static class CreditCardVH extends RecyclerView.ViewHolder {

    @BindView(R.id.tvCreditCardsName) TextView tvCreditCardsName;

    @BindView(R.id.tvCreditCardsNumber) TextView tvCreditCardsNumber;

    @BindView(R.id.tvCreditCardsAmount) TextView tvCreditCardsAmount;

    public CreditCardVH(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }
}

@Override
public int getItemCount() {
    return baseProductsItems.size();
}

@Override
public int getItemViewType(int position) {
    BaseProductsItem item = baseProductsItems.get(position);
    if (item instanceof DepositsProductsItem)
        return ProductsType.DEPOSIT;
    else if (item instanceof CreditsProductsItem)
        return ProductsType.CREDIT;
    else if (item instanceof DebitCardsProductsItem)
        return ProductsType.DEBIT_CARD;
    else if (item instanceof CreditCardsProductsItem)
        return ProductsType.CREDIT_CARD;
    else if (item instanceof TitleProductsItem)
        return ProductsType.TITLE;
    else return 0;
}

}

android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-07-08 19:48:27 +0000 UTC

如何为 textView 设置点击样式和图片?

  • 0

对于textView,我用android:background=""设置了图片,但是点击样式也是通过这个标签设置的,请问如何解决这个问题?

android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-07-08 14:46:40 +0000 UTC

你怎么知道是否已经过了 30 秒?

  • -2

里面有PinActivity,里面输入密码的表格,我需要判断,如果过了30秒就输入密码,否则启动应用。如何设置时间检查?

android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-06-28 20:37:49 +0000 UTC

如何将列表传递给主线程?

  • 1

有一个线程在其中填充和生成列表。需要将其转移到适配器中的主线程,如何做到这一点?

private class LooperThread extends Thread implements Handler.Callback{

    Handler handler;

    @Override
    public void run() {
        Looper.prepare();
        handler = new Handler(this);
        Looper.loop();
    }

    @Override
    public boolean handleMessage(Message message) {
        if(message.what == 0){
            DepositGeneration generation = new DepositGeneration();
            DepositOperations operations = new DepositOperations(generation.setList());
            List<DepositItem> list = operations.sortedList();
            List<BaseProduct> products = DepositFormatter.setProducts(list);

        }
        return true;
    }

    public Handler getHandler() {
        return handler;
    }
}
android
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-06-28 14:20:18 +0000 UTC

不在新线程上发出结果

  • 1

在这个类中,生成了一个List,应该输出到Log,但是这并没有发生,虽然创建了流

private class LooperThread extends Thread implements Handler.Callback{

    Handler handler;

    @Override
    public void run() {
        Looper.prepare();
        handler = new Handler(this);
        Looper.loop();
    }

    @Override
    public boolean handleMessage(Message message) {
        if(message.what == 0){
            DepositGeneration generation = new DepositGeneration();
            DepositOperations operations = new DepositOperations(generation.setList());
            List<DepositItem> list = operations.sortedList();
            for (int i = 0; i < list.size(); i++) {
                Log.d("TAG", list.get(i).getName() +
                        " " + new SimpleDateFormat("dd.MM.yyyy").format(list.get(i).getOpenedDate()) +
                        " " + new DecimalFormat("#0.00").format(list.get(i).getAmount()));
            }
        }
        return true;
    }

    public Handler getHandler() {
        return handler;
    }
}

而他的呼唤

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

    looperThread = new LooperThread();
    looperThread.start();


}

最后我破坏了溪流

 @Override
public void onDestroy() {
    if(looperThread.getHandler() != null){
        Log.d("TAG", "DESTROY");
        looperThread.getHandler().getLooper().quit();
    }
    super.onDestroy();
}

已销毁出口的日志中的消息

更改呼叫和传递消息但未执行

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

    looperThread = new LooperThread();

    if (looperThread.getHandler() != null){
        Message message = looperThread.getHandler().obtainMessage(0);
        message.sendToTarget();
    }

    looperThread.start();

}
android
  • 3 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-06-12 17:12:10 +0000 UTC

如何在同一级别上设置两个文本视图?

  • 2

如何将右侧的textview设置为与底部的textview齐平 在此处输入图像描述

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<TextView
    android:id="@+id/numberCard"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="NumberCard"
    style="@style/TextNameTitle"
    android:layout_marginStart="@dimen/marginLarge"
    android:layout_marginTop="@dimen/marginLarge"/>

<TextView
    android:id="@+id/nameCard"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="NameCard"
    style="@style/TextNameBody"
    android:layout_marginStart="@dimen/marginLarge"
    android:layout_marginBottom="@dimen/marginLarge"
    android:layout_below="@id/numberCard"/>

<TextView
    android:id="@+id/totalCard"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TotalCard"
    style="@style/TextNameTitle"
    android:layout_marginEnd="@dimen/marginLarge"
    android:layout_marginTop="@dimen/marginLarge"
    android:layout_alignParentEnd="true"/>

   </RelativeLayout>
android
  • 2 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-04-12 22:08:10 +0000 UTC

使用什么来使该方法在某个时间过去之前一直有效?

  • 0

该方法必须在一定时间内起作用,例如,它在文本区域中显示单词 5 秒,这可以用来做什么?

javascript
  • 1 个回答
  • 10 Views
Martin Hope
Антон Лялин
Asked: 2020-04-11 17:25:12 +0000 UTC

使用自己的密钥组装的应用程序未安装

  • 0

我创建了我的 app.keystore 密钥,我正在尝试构建调试以检查手机,但未安装应用程序,如果工作室使用其默认密钥构建,它将启动。什么可能导致这样的问题?

apply plugin: 'com.android.application'

android {
compileSdkVersion 27
defaultConfig {
    applicationId "com.personal.anton.notes"
    minSdkVersion 17
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.github.bumptech.glide:glide:3.7.0'
implementation 'com.android.volley:volley:1.0.0'
}
android
  • 3 个回答
  • 10 Views

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5