Closed coderloveryan closed 5 years ago
以下是我写的测试代码,但是我发现卡品显示不出来,原因是setCells方法内部调用addCellInternal方法时, MVHelper mvHelper = getMVHelper();中mvHelper为空mvHelper为空时因为getMVHelper()方法中serviceManager为空。造成setCells虽然调用了但是Card中的mCells集合是空的所以没有显示。 public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView; private Button btnLogin; private Button btnUnLogin; TangramEngine engine; TangramBuilder.InnerBuilder builder; private SingleColumnCard unLoginCard; private SingleColumnCard loginCard; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = findViewById(R.id.recyclerView); btnLogin = findViewById(R.id.btn_login); btnUnLogin = findViewById(R.id.btn_unlogin); TangramBuilder.init(this.getApplicationContext(), new IInnerImageSetter() { @Override public <IMAGE extends ImageView> void doLoadImageUrl(@NonNull IMAGE view, @Nullable String url) { Glide.with(MainActivity.this).load(url).into(view); } }, ImageView.class); this.builder = TangramBuilder.newInnerBuilder(this); this.builder.registerCell("unlogin", UnLoginCell.class, UnLoginView.class); this.builder.registerCell("login", LoginCell.class, LoginView.class); engine = this.builder.build(); engine.bindView(recyclerView); recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); engine.onScrolled(); } }); engine.setPreLoadNumber(3); List<Card> cards = new ArrayList<>(); initUnLoginCard(); initLoginCard(); cards.add(unLoginCard); engine.setData(cards); btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { engine.replace(unLoginCard, loginCard); } }); btnUnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { engine.replace(loginCard, unLoginCard); } }); } private void initLoginCard() { loginCard = new SingleColumnCard(); LoginCell loginCell = new LoginCell(); ArrayList<BaseCell> loginCellList = new ArrayList<>(); loginCellList.add(loginCell); loginCard.setCells(loginCellList); } private void initUnLoginCard() { unLoginCard = new SingleColumnCard(); UnLoginCell unLoginCell = new UnLoginCell(); ArrayList<BaseCell> unLoginCellList = new ArrayList<>(); unLoginCellList.add(unLoginCell); unLoginCell.setStringType("unlogin"); unLoginCard.setCells(unLoginCellList); } @Override protected void onDestroy() { super.onDestroy(); engine.destroy(); }
}
没人回复,我现在做法是拉取服务端数据成功后然后app本地按照Tangram格式重新组织一份新的包含布局以及服务端数据的json数据,最后setData(JsonArray)
以下是我写的测试代码,但是我发现卡品显示不出来,原因是setCells方法内部调用addCellInternal方法时, MVHelper mvHelper = getMVHelper();中mvHelper为空mvHelper为空时因为getMVHelper()方法中serviceManager为空。造成setCells虽然调用了但是Card中的mCells集合是空的所以没有显示。 public class MainActivity extends AppCompatActivity {
}